Hoi,
Ik heb een Access database omgezet naar een MySQL database, en dat lijkt prima te werken. Ik loop nu echter tegen een probleem aan waar ik even niet omheen kan.
Als ik een join query (bijvoorbeeld een left join) uitvoer in Access, waarin twee of meer tabellen eenzelfde kolom naam hebben, dan krijg ik die kolommen netjes terug met naam "tabel.kolom", in plaats van enkel "kolom". In MySQL echter krijgen de kolommen allemaal gewoon de naam "kolom", en zitten er dus dubbele kolom namen in het resultaat!
Voorbeeld: tabel1 met kolom id en tabel2 met kolom id. Na een join als:
krijg ik van Access de volgende kolommen terug:
In MySQL krijg ik echter deze kolommen:
Ik kan in mijn code nu geen onderscheid maken van de twee kolommen met dezelfde naam, en vaak komt er dus verkeerde data in.
De meest voor de hand liggende oplossing is om alle kolommen apart in de query te vragen en ze allemaal een alias te geven (iets als "tabel_kolom"), zodat de query dan iets als dit wordt:
Dit is echter geen oplossing voor mij, de queries worden automatisch gegenereerd, en de namen van de kolommen in de tabellen die gejoined worden (tabel2 in dit voorbeeld) weet ik dat op moment niet. Ik kan dus niks anders dan "tabel2.*" gebruiken.
Een andere oplossing is om de database te gaan door spitten en alle kolom namen een uniek voorvoegsel te geven (de tabelnaam), maar ook dat heeft niet echt mijn voorkeur...
Is er niet een andere manier waarop ik dit kan oplossen? Kan ik de database niet dwingen om (net als Access) automatisch de tabel naam er voor te zetten als twee kolommen dezelfde naam hebben?
Bedankt!
Ik heb een Access database omgezet naar een MySQL database, en dat lijkt prima te werken. Ik loop nu echter tegen een probleem aan waar ik even niet omheen kan.
Als ik een join query (bijvoorbeeld een left join) uitvoer in Access, waarin twee of meer tabellen eenzelfde kolom naam hebben, dan krijg ik die kolommen netjes terug met naam "tabel.kolom", in plaats van enkel "kolom". In MySQL echter krijgen de kolommen allemaal gewoon de naam "kolom", en zitten er dus dubbele kolom namen in het resultaat!
Voorbeeld: tabel1 met kolom id en tabel2 met kolom id. Na een join als:
SQL:
1
| SELECT tabel1.*, tabel2.* FROM (tabel1 LEFT JOIN tabel2 ON tabel1.id = tabel2.tabel1_id) |
krijg ik van Access de volgende kolommen terug:
code:
1
| tabel1.id, tabel2.id, tabel1_id |
In MySQL krijg ik echter deze kolommen:
code:
1
| id, id, tabel1_id |
Ik kan in mijn code nu geen onderscheid maken van de twee kolommen met dezelfde naam, en vaak komt er dus verkeerde data in.
De meest voor de hand liggende oplossing is om alle kolommen apart in de query te vragen en ze allemaal een alias te geven (iets als "tabel_kolom"), zodat de query dan iets als dit wordt:
SQL:
1
| SELECT tabel1.id AS tabel1_id, tabel2.id AS tabel2_id, tabel2.tabel1_id AS tabel2_tabel1_id FROM (tabel1 LEFT JOIN tabel2 ON tabel1.id = tabel2.tabel1_id) |
Dit is echter geen oplossing voor mij, de queries worden automatisch gegenereerd, en de namen van de kolommen in de tabellen die gejoined worden (tabel2 in dit voorbeeld) weet ik dat op moment niet. Ik kan dus niks anders dan "tabel2.*" gebruiken.
Een andere oplossing is om de database te gaan door spitten en alle kolom namen een uniek voorvoegsel te geven (de tabelnaam), maar ook dat heeft niet echt mijn voorkeur...
Is er niet een andere manier waarop ik dit kan oplossen? Kan ik de database niet dwingen om (net als Access) automatisch de tabel naam er voor te zetten als twee kolommen dezelfde naam hebben?
Bedankt!