Каков наилучший способ объединить несколько погружений в SQL
У меня есть три подзапроса дать мне таблицу a, b, c. Я хочу сначала присоединиться к ним, а затем выбрать необходимую информацию. Я новичок в SQL, не уверен, что мои объединения являются лучшим способом:
Вот что я сделал до сих пор
select
a.truck,
a.vendor,
a.domicile,
b.routes,
c.status
from
(select
Transp.truck
Transp.vendor
Transp.docimicle
from
Transp) a
left join
(select
Dispatch.truck
count(Dispatch.routes) as routes
from
Dispatch
group by
Dispatch.truck) b on a.truck = b.truck
left join
(select
Repair.truck
Repair.status
from
Repair) c on a.truck = c.truck
1 ответ
Решение
Вы можете покончить как минимум с двумя из ваших подзапросов:
SELECT
t.truck,
t.vendor,
t.domicile,
COALESCE(b.routes, 0) AS routes,
r.status
FROM Transp t
LEFT JOIN
(
SELECT truck, COUNT(*) AS routes
FROM Dispatch
GROUP BY truck
) b
ON t.truck = b.truck
LEFT JOIN Repair r
ON t.truck = r.truck;
Я сказал "по крайней мере" два из подзапросов, потому что также возможно вообще не использовать подзапрос для вычисления количества. Но я предпочитаю писать это, как указано выше, потому что ясно, что вы выполняете агрегацию в таблице Dispatch.