Неправильный SQL Неизвестный столбец 'role_user.role_id' в 'where clause' - PullRequest
0 голосов
/ 20 мая 2018

У меня есть следующий код:

SELECT * FROM `users` JOIN `role_user` ON `users.id` = `role_user.user_id` 
WHERE `role_user.role_id` = 2

таблица схем users:

enter image description here

таблица схем role:

enter image description here

Ответы [ 2 ]

0 голосов
/ 20 мая 2018

Обратные пометки вообще не нужны для вашего запроса.Кроме того, я бы рекомендовал использовать псевдонимы таблиц.Более читаемая форма вашего запроса выглядит следующим образом:

SELECT *
FROM users u JOIN
     role_user ru
     ON u.id = ur.user_id 
WHERE ru.role_id = 2;

Все, что находится между обратными галочками в одной ссылке.Так,

`role_user.user_id`

относится к одному столбцу с таким именем, а не к столбцу user_id в role_user.Вы можете обратиться к нужному столбцу:

`role_user`.`user_id`

, но это излишне - труднее набирать текст и труднее писать.В целом, однако, присвойте имена столбцам и таблицам, чтобы их не нужно было экранировать.

0 голосов
/ 20 мая 2018

Вам необходимо установить обратные метки в правильных положениях, чтобы экранировать имена объектов (имена таблиц и столбцов).Поэтому вы должны изменить свой запрос следующим образом:

SELECT * FROM `users` JOIN `role_user` ON `users`.`id` = `role_user`.`user_id` 
WHERE `role_user`.`role_id` = 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...