Ответ 1
Это означает, что обе таблицы в запросе имеют столбец user_id
.
Вам нужно указать, какой из них вы хотите получить в инструкции SELECT, например
SELECT username, image, re.user_id
Я пытаюсь получить пользовательскую информацию пользователя, оставившего этот отзыв.
Со следующим кодом:
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
Я получаю сообщение об ошибке:
Столбец 'user_id' в списке полей неоднозначен
Что это значит?
Это означает, что обе таблицы в запросе имеют столбец user_id
.
Вам нужно указать, какой из них вы хотите получить в инструкции SELECT, например
SELECT username, image, re.user_id
user_id находится в таблицах table_reviews
, table_users
.
Вам также нужно указать столбцы с именем псевдонима таблицы.
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
Это означает, что столбец user_id находится в обеих таблицах, т.е. в table_reviews, table_users
Попробуйте вот так:
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
В разделе where (WHERE us.user_id = 1) проверяются не только выбранные значения (SELECT username, image, user_id), все объединенные столбцы рассматриваются в предложении where, поэтому в вашем примере у вас есть столбец user_id в обеих соединенных таблицах, Если у вас есть запрос вроде этого:
SELECT table_reviews.id FROM table_users AS us
JOIN table_reviews AS re
ON re.user_id = us.user_id
WHERE id
id будет неоднозначным, поскольку id-s из table_reviews и table_reviews будет рассмотрен в where where, хотя выбран только идентификатор из table_reviews.