нужно увидеть консолидированный вывод подзапроса - PullRequest
0 голосов
/ 17 мая 2019

мне нужно посмотреть полет, количество билетов на этот рейс, количество сотрудников (стюардессы) на этот рейс.

Я могу видеть их по 2 подзапросам, но не вижу консолидированного представления

        select f.flightid, count(ticketnum)  from flight f , ticket t 
        where f.actDepartDateTime is not null
        and  f.flightid=t.flightid
        group by f.flightid
        order by 1;


        select f.flightid, count(h.staffid) from flight f ,hosting h
        where f.actDepartDateTime is not null
        and   f.flightid=h.flightID 
        group by f.flightid
        order by 1;

Ответы [ 2 ]

1 голос
/ 17 мая 2019

Простое решение - используйте коррелированные подзапросы для подсчета. (Не нужно беспокоиться о многих отношениях, множественных объединениях, перелетах без билетов и т. Д.)

select f.flightid, 
       (select count(*) from ticket t where f.flightid = t.flightid) as cnt_ticketnum, 
       (select count(*) from hosting h where f.flightid = h.flightID) as cnt_staffid
from flight f 
where f.actDepartDateTime is not null           
order by f.flightid
0 голосов
/ 17 мая 2019

Используйте такой оператор inner join среди всех трех таблиц

    select f.flightid, 
           count( case when nvl(t.ticketnum,0)>0 then 1 end ) as cnt_ticketnum, 
           count( case when nvl(h.staffid,0)>0   then 1 end ) as cnt_staffid
      from flight f 
      join hosting h on f.flightid=h.flightID 
      join ticket t on f.flightid=t.flightid
     where f.actDepartDateTime is not null           
     group by f.flightid
     order by f.flightid;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...