Каков наилучший способ объединить несколько погружений в 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.

Другие вопросы по тегам