Я добавляю 5-ю таблицу к существующему объединению. Исходный запрос всегда будет возвращать одну строку, поскольку в предложении where указан уникальный идентификатор. Вот таблицы, которые мы используем:
Таблица 1
Кэрид, Кэтид, Макейд, Моделид, Кэрэйр
Таблица 2
makeid, makename
Таблица 3
modelid, имя модели
Таблица 4
катида, кличка
Таблица 5
id, caryear, makename, имя модели
Вот существующий запрос, который я использую:
SELECT a.*, e.citympg, e.hwympg
FROM table1 a
JOIN table2 b on a.makeid=b.makeid
JOIN table3 c on a.modelid=c.modelid
JOIN table4 d on a.catid=d.catid
JOIN table5 e on b.makename = e.make
and c.modelname = e.model
and a.caryear = e.year
WHERE a.carid = $carid;
Есть 2 вопроса, которые мне нужно решить -
Если в таблице 5 нет совпадений, результаты не возвращаются. Казалось бы, мне нужно выполнить какое-то левое соединение или разделить запрос и сделать объединение.
Когда в таблице 5 есть совпадение, он возвращает несколько строк. Поскольку критерии, возвращающие одну строку, не используются, я бы согласился на среднее значение citympg и hwympg.
Можно ли достичь обеих целей одним запросом? Как?