2013-09-28 11 views
10

Sto tentando di ottenere le informazioni dell'utente dell'utente che ha lasciato questa recensione.La colonna 'user_id' nella lista dei campi è ambigua

Con il seguente codice:

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 

ottengo l'errore:

Column 'user_id' in field list is ambiguous

Cosa significa?

risposta

20

Significa che entrambe le tabelle nella query hanno la colonna user_id.

È necessario specificare quale si desidera ottenere nell'istruzione SELECT come SELECT username, image, re.user_id

5

colonna user_id è in entrambe le tabelle table_reviews, table_users.

È necessario specificare anche le colonne con nome alias di tabella.

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

Significa colonna user_id è in entrambe le tabelle cioè in table_reviews, table_users

Prova in questo modo:

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

Non solo i valori selezionati (SELECT nome utente, immagine, user_id) vengono esaminati nella clausola where (WHERE us.user_id = 1), tutte le colonne unite vengono esaminate nella clausola where, quindi nel tuo esempio hai user_id colum n in entrambe le tabelle unite. Se si dispone di domanda come questa:

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

id sarà ambiguo perché id-s da table_reviews e table_reviews saranno esaminate in cui la clausola, anche se è selezionato solo id da table_reviews.

Problemi correlati