2013-09-28 8 views
10

Próbuję uzyskać informacje o użytkowniku użytkownika, który opuścił tę recenzję.Kolumna "user_id" w liście pól jest niejednoznaczna.

z następującego kodu:

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 

pojawia się błąd:

Column 'user_id' in field list is ambiguous

Co to oznacza?

Odpowiedz

20

Oznacza to, że obie tabele w zapytaniu mają kolumnę user_id.

Musisz określić, który z nich chcesz dostać w SELECT jak SELECT username, image, re.user_id

5

kolumna id_użytkownika znajduje się w tabelach table_reviews, table_users.

Należy również podać kolumny z aliasem tabeli.

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

Oznacza to kolumna user_id jest w obu tabelach czyli w table_reviews, table_users

Spróbuj tak:

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

Nie tylko wybrane wartości (SELECT nazwa użytkownika, obraz, identyfikator użytkownika) są sprawdzane w klauzuli where (WHERE us.user_id = 1), wszystkie połączone kolumny są sprawdzane w klauzuli where, więc w twoim przykładzie masz user_id colum n w obu połączonych tabelach. Jeśli masz zapytanie jak ten:

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

id będzie niejednoznaczna, ponieważ będą rozpatrywane id-s z table_reviews i table_reviews w którym chociaż wybrano tylko id od table_reviews klauzula.

Powiązane problemy