2017-01-05 3 views
0

мне нужно, чтобы отобразить все не сотрудников, врачей и пациента в каждом отделе ..Как объединить два присоединиться запросы

Я пробовал этот запрос для отображения нет персонала, врачей и она работает правильно

ALTER view vwDisplay 
AS 
    select 
     dpt.Department_ID, dpt.Department_Name, 
     num_of_doc, num_of_staff, No_of_Patient 
    from 
     Department dpt 
    join 
     (select 
      count(*) as num_of_doc, Department_ID 
     from 
      Doctor_Main 
     group by 
      Department_ID) dct on dpt.Department_ID = dct.Department_ID 
    join 
     (select 
      count(*) as num_of_staff, Department_ID 
     from 
      Other_Staff 
     group by 
      Department_ID) stf on stf.Department_ID = dpt.Department_ID 

, и мне также необходимо отобразить пациента в каждом отделе. Но есть не отношения между отделом и пациентом, врач не работает только для одного отдела ..

Этот запрос я использовал для отображения нет пациента для каждого врача

select count(*) as No_of_Patient, Doctor_Main.Doctor_ID 
from Patients_Main 
inner join Doctor_Main on Patients_Main.Doctor_ID = Doctor_Main.Doctor_ID 
group by Doctor_Main.Doctor_ID 

теперь мне нужно, чтобы объединить эти два, когда я выполнить этот запрос следующим образом

ALTER view vwDisplay 
as 
select dpt.Department_ID,dpt.Department_Name,num_of_doc,num_of_staff,No_of_Patient 
from Department dpt 
    join (select count(*) as num_of_doc,Department_ID from Doctor_Main GROUP BY Department_ID) dct 
    on dpt.Department_ID = dct.Department_ID 

    join (select count(*) as num_of_staff,Department_ID from Other_Staff GROUP BY Department_ID) stf 
    on stf.Department_ID = dpt.Department_ID 

    --join (select count(*) as No_of_Patient,Doctor_ID from Patients_Main GROUP BY Doctor_ID) dcth 
    --on dcth.Doctor_ID = Doctor_Main.Doctor_ID 


    select count(*) as No_of_Patient,Doctor_Main.Doctor_ID 
    from Patients_Main 
    inner join Doctor_Main on Patients_Main.Doctor_ID = Doctor_Main.Doctor_ID 
    group by Doctor_Main.Doctor_ID 

Эта ошибка возникает:

Неправильное Synta x рядом с ключевым словом «select».

Что я могу сделать для этой проблемы? Или у вас есть другое решение для этого?

+0

Просмотреть все еще * реляционный * объект, он имеет строки и столбцы определенных типов. –

+0

У вас есть 'Department_ID' на' Doctors_Main', поэтому вы должны иметь возможность Группировать по Департаменту и подсчитывать количество пациентов. Раскомментируйте соединение, чтобы получить счетчик пациентов, но вместо 'Doctor_ID', Group by' Department_ID'. Во внутреннем select, присоединитесь к 'Doctors_Main', чтобы получить' Department_ID' –

+0

@WEI_DBA, можете ли вы дать мне пример кода .coz, я запутался в этом – Rooter

ответ

0

Я думаю, вы можете попробовать это.

ALTER view vwDisplay 
as 
select dpt.Department_ID,dpt.Department_Name,num_of_doc,num_of_staff,No_of_Patient 
from Department dpt 
    join (select count(*) as num_of_doc,Department_ID from Doctor_Main GROUP BY Department_ID) dct 
    on dpt.Department_ID = dct.Department_ID 

    join (select count(*) as num_of_staff,Department_ID from Other_Staff GROUP BY Department_ID) stf 
    on stf.Department_ID = dpt.Department_ID 

    join (select count(*) as No_of_Patient,DM.Department_ID from Patients_Main PM 
      join Doctors_Main DM ON PM.Doctor_ID = DM.Doctor_ID GROUP BY DM.Department_ID) dcth 
    on dcth.Department_ID = dpt.Department_ID 
+0

Спасибо, друг, он работает: D – Rooter