Как соединить два запроса, в каждом из которых, свои JOIN? - MySQL
Формулировка задачи:
Здравствуйте, специалисты!
Есть запрос к таблице водителей некоторой фырмы:
В числе прочих полей из этого запроса получаем поле car.
Также имеется запрос к таблице автомобилей, подтягивающий автомобиль к водителю:
Как влепить JOIN от первого запроса ко второму, т.е. выбрать всех водителей, причём для тех, у кого есть автомобиль, ещё и данные про авто?
Пробовал так:Получаю всё, что нужно, но только для тех водителей, к которым привязана машина. А надо выбрать всех.
SELECT d.*, rw.name AS `rwname` FROM DRIVERS_TABLE d LEFT JOIN RW_TABLE rw ON (d.`rw`=rw.`id`) WHERE d.`firm`=1
SELECT c.*, mark.`value` AS markname FROM CARS_TABLE c LEFT JOIN HLP_TABLE mark ON (c.`mark`=mark.`id`) WHERE c.`id`=поле_car_из_предыдущего_запроса
SELECT d.*, c.*, rw.name AS `rwname`, mark.`value` AS `markname` FROM DRIVERS_TABLE d LEFT JOIN RW_TABLE rw ON (d.`rw`=rw.`id`), CARS_TABLE c LEFT JOIN HLP_TABLE mark ON (c.`mark`=mark.`id`) WHERE d.`firm`=1 AND c.`id`=d.`car`
Решение задачи: «Как соединить два запроса, в каждом из которых, свои JOIN?»
textual
Листинг программы
SELECT d.*, c.*, rw.name AS `rwname`, mark.`value` AS `markname` FROM DRIVERS_TABLE d LEFT JOIN RW_TABLE rw ON (d.`rw`=rw.`id`) LEFT JOIN CARS_TABLE c ON (c.`id`=d.`car`) LEFT JOIN HLP_TABLE mark ON (c.`mark`=mark.`id`) WHERE d.`firm`=1
Объяснение кода листинга программы
- SELECT - выборка данных из указанных таблиц
- d., c., rw.name AS
rwname
, mark.value
ASmarkname
- список выбираемых столбцов - FROM - указание источника данных
- DRIVERS_TABLE - название таблицы, из которой производится выборка
- LEFT JOIN - метод объединения таблиц
- RW_TABLE - название таблицы, с которой производится объединение
- ON - условие объединения таблиц
- d.
rw
=rw.id
- условие объединения по указанному столбцу - LEFT JOIN - метод объединения таблиц
- CARS_TABLE - название таблицы, с которой производится объединение
- ON - условие объединения таблиц
- c.
id
=d.car
- условие объединения по указанному столбцу - LEFT JOIN - метод объединения таблиц
- HLP_TABLE - название таблицы, с которой производится объединение
- ON - условие объединения таблиц
- c.
mark
=mark.id
- условие объединения по указанному столбцу - WHERE - условие выборки данных
- d.
firm
=1 - условие выборки по указанному столбцу - ; - конец запроса
-
- все символы и названия таблиц и столбцов выделены кавычками для предотвращения ошибок при написании запроса
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д