Как использовать INNER JOIR для двух таблиц на основе 3-ей таблицы?
Имеется 3 таблицы в БД.
Companies - содержит информацию о существующих компаниях.
Accounts - содержит информацию аккаунтов.
Employees - связывает таблицы Companies и Accounts говоря, что определенный работник работает на определенную компанию.
В сессии у меня хранится объект Employee, который содержит поля employee_id, id компании и id аккаунта текущего юзера.
Далее, хочу создать хранимую процедуру, принимающую в себя employee_id, которая из таблицы Employees найдет связку company_id; account_id и выведет все столбцы из таблиц Companies и Accounts для данного пользователя.
Как извлечь с помощью JOIN (INNER JOIN) информацию про юзера и его компанию?
Вот что пришло в голову:
SELECT company_name, account_first_name, account_last_name, account_login FROM accounts INNER JOIN companies ON company_id = 21 AND account_id = 28; ... |
SELECT company_name, account_first_name, account_last_name, account_login FROM accounts INNER JOIN companies ON company_id = 21 AND account_id = 28; ...
Результат тот, но как это объединить два запроса ниже в один:
SELECT account_id, company_id FROM employees WHERE employee_id = 3; // результат company_id = 21, account_id = 28 SELECT company_name, account_first_name, account_last_name, account_login FROM accounts INNER JOIN companies ON company_id = 21 AND account_id = 28; |
SELECT account_id, company_id FROM employees WHERE employee_id = 3; // результат company_id = 21, account_id = 28 SELECT company_name, account_first_name, account_last_name, account_login FROM accounts INNER JOIN companies ON company_id = 21 AND account_id = 28;
Как составить запрос с JOIN, когда есть 2 адишника из таблицы employee, на получение всех полей компании и соответствующего аккаунта?
Дополнительно:
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос

Для использования INNER JOIN для двух таблиц на основе третьей таблицы в SQL, вам необходимо объединить первую таблицу с третьей таблицей, а затем объединить вторую таблицу с этим результатом. INNER JOIN позволяет вам объединить строки из двух таблиц на основе совпадающих значений в указанных столбцах.
Предположим, у нас есть таблицы `table1`, `table2` и `table3`, и нам нужно объединить `table1` и `table2` на основе значений из `table3`. Для этого мы можем написать следующий запрос:
SELECT * FROM table1 INNER JOIN table3 ON table1.column_name = table3.column_name INNER JOIN table2 ON table2.column_name = table3.column_name;
В этом запросе мы сначала объединяем `table1` и `table3` на основе совпадающих значений в столбцах `column_name`, а затем объединяем результат с `table2` также на основе значений в столбце `column_name`.
Убедитесь, что замените `column_name` на реальные названия столбцов, по которым вы хотите выполнить объединение таблиц.
Таким образом, использование INNER JOIN для двух таблиц на основе третьей таблицы позволит вам объединить данные из всех трех таблиц, основываясь на совпадающих значениях в указанных столбцах.