2013-09-28 12 views
10

Ich versuche, die Benutzerinformationen des Benutzers, der diese Rezension verließ, zu erhalten.Spalte 'user_id' in Feldliste ist mehrdeutig

Mit dem folgenden Code:

SELECT username, image, user_id FROM table_users AS us 
JOIN table_reviews AS re 
ON re.user_id = us.user_id 
WHERE us.user_id = 1 AND 
re.review_id= 1 

ich den Fehler:

Column 'user_id' in field list is ambiguous

Was bedeutet das?

Antwort

20

Es bedeutet, dass beide Tabellen in der Abfrage die Spalte user_id haben.

Sie müssen angeben, welche Sie in der SELECT-Anweisung erhalten möchten wie SELECT username, image, re.user_id

5

Spalte user_id ist in beiden table_reviews, table_users Tabellen.

Sie müssen auch Spalten mit Tabellenaliasnamen angeben.

SELECT username, image, us.user_id FROM table_users AS us 
JOIN table_reviews AS re 
ON re.user_id = us.user_id 
WHERE us.user_id = 1 AND 
re.review_id= 1 
3

Es bedeutet Spalte user_id in beiden Tabellen ist, dh, in table_reviews, table_users

wie Try this:

SELECT username, image, us.user_id //or re.user_id 
FROM table_users AS us 
JOIN table_reviews AS re 
ON re.user_id = us.user_id 
WHERE us.user_id = 1 AND 
re.review_id= 1 
0

Nicht nur ausgewählte Werte (SELECT username, image, user_id) werden in where-Klausel (WHERE us.user_id = 1) untersucht, alle verbundenen Spalten werden in where-Klausel untersucht, also haben Sie in Ihrem Beispiel user_id colum n in beiden verbundenen Tabellen. Wenn Sie Abfrage wie diese haben:

SELECT table_reviews.id FROM table_users AS us 
JOIN table_reviews AS re 
ON re.user_id = us.user_id 
WHERE id 

id wird mehrdeutig sein, weil id-s von table_reviews und table_reviews wird in where-Klausel geprüft werden, obwohl nur id aus table_reviews ausgewählt ist.

Verwandte Themen