foutmelding: field list is ambiguous
Johan Vels
25/09/2014 11:48:18Hallo Allemaal,
Heb de volgende code:
Nu krijg ik de volgende melding:
Column 'id' in field list is ambiguous
Hoe los ik dit op?
Heb de volgende code:
Code (php)
1
2
3
4
5
2
3
4
5
SELECT id, veld2, veld3
FROM db1.tabel1, db2.tabel2, db3.tabel3
WHERE NOT EXISTS (SELECT *
FROM db1.tabel1
WHERE tabel1.id = tabel2.id)
FROM db1.tabel1, db2.tabel2, db3.tabel3
WHERE NOT EXISTS (SELECT *
FROM db1.tabel1
WHERE tabel1.id = tabel2.id)
Nu krijg ik de volgende melding:
Column 'id' in field list is ambiguous
Hoe los ik dit op?
PHP hulp
21/12/2024 06:21:29Jan de Laet
25/09/2014 11:58:15Door bij de velden achter de select ook aan te geven uit welke tabel ze komen. Bijvoorbeeld tabel1.id.
Eddy E
25/09/2014 12:03:05Ambiguous betekent: niet geheel duidelijk.
Je hebt waarschijnlijk in meer dan 1 tabel de kolom 'id' staan.
Welk kolom moet hij dan pakken? Die van tabel 1? Tabel 2? Of tabel 3?
Om fouten te voorkomen geeft hij (en terecht) een foutmelding.
Dit kan je inderdaad, zoals Jan de Laet voorkomen door duidelijk te vermelden uit welke tabel die komt.
En wil je dat korter maken, dan kan je gebruik maken van aliassen:
Zou je geen aliassen gebruiken, dan ziet exact dezelfde query er zo uit:
Stuk lastiger te lezen. En aliassen toepassen is veel minder typewerk.
Je kan zelfs het AS geheel weglaten.
Je hebt waarschijnlijk in meer dan 1 tabel de kolom 'id' staan.
Welk kolom moet hij dan pakken? Die van tabel 1? Tabel 2? Of tabel 3?
Om fouten te voorkomen geeft hij (en terecht) een foutmelding.
Dit kan je inderdaad, zoals Jan de Laet voorkomen door duidelijk te vermelden uit welke tabel die komt.
En wil je dat korter maken, dan kan je gebruik maken van aliassen:
Code (php)
1
2
3
4
2
3
4
SELECT u.user_id, p.post_id, p.message
FROM phpbbb_users AS u
LEFT JOIN phpbb_posts AS p
ON (u.user_id = p.user_id)
FROM phpbbb_users AS u
LEFT JOIN phpbb_posts AS p
ON (u.user_id = p.user_id)
Zou je geen aliassen gebruiken, dan ziet exact dezelfde query er zo uit:
Code (php)
1
2
3
4
2
3
4
SELECT phpbbb_users.user_id, phpbb_posts.post_id, phpbb_posts.message
FROM phpbbb_users
LEFT JOIN phpbb_posts
ON (phpbb_users.user_id = phpbb_posts.user_id)
FROM phpbbb_users
LEFT JOIN phpbb_posts
ON (phpbb_users.user_id = phpbb_posts.user_id)
Stuk lastiger te lezen. En aliassen toepassen is veel minder typewerk.
Je kan zelfs het AS geheel weglaten.
Johan Vels op 25/09/2014 11:48:18:
Ik adviseer je om deze query om te schrijven naar een ANSI JOIN, dan zal je waarschijnlijk heel snel zien dat je het niet goed aanpakt.