У меня есть 2 таблицы, которые я опишу ниже:
1) Основная таблица, которая имеет автоинкремент по U_ID и имеет столбец с именем RU_ID, который ссылается на идентификатор таблицы поиска.
2) Таблица поиска автоматически увеличивается на RU_ID и имеет столбец с именем ROLE
который имеет жало значение.
Теперь мне нужно SELECT
утверждение, которое показывает мне все значения основной таблицы (SELECT * FROM …) и ROLE
значение справочной таблицы.
У меня есть это до сих пор:
Обратите внимание, что = 2 является статическим только для этого примера, это будет переменная, которая содержит номер RU_ID. Также этот пример будет использоваться в PHP — PDO, но SQL-запрос действительно является общим.
SELECT *
FROM tbl_users as u
WHERE u.RU_ID = 2
AND STATUS = 1
AND u.RU_ID IN
(SELECT ROLE
FROM tbl_role_users, tbl_users
WHERE RU_ID = 2)";
Спасибо, что изучили это со мной.
Вы пытались присоединиться?
SELECT t.*, t1.role
FROM tbl_users t
JOIN tbl_role_users t1 ON t.RU_ID = t1.RU_ID -- # --or t1.ID whichever is referenced
WHERE t1.RU_ID = 2
AND t.status = 1;
если вы хотите присоединиться к таблице без фильтрации лишних строк, просто добавьте LEFT
перед JOIN
Я бы порекомендовал вам отказаться от способа объединения таблиц, предшествующего ANSI, и фактически использовать синтаксис JOIN, поскольку его проще читать в сложных запросах, или же вы можете иметь больше функциональных возможностей с помощью синтаксиса JOIN … и таким образом вам не нужен IN ( ) заявление
Других решений пока нет …