2017-01-05 28 views
0
私は各部門のスタッフ、医師と患者の一切を表示する必要がない

を..参加し、それが適切に2は、私はスタッフ、医師のノーを表示するには、このクエリを試してみました</p> <p>クエリ

に動作されるマージする方法
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 

ために患者の何を表示するのに使用されていないこのクエリでは、今、私はこれらの2をマージする必要があり、

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'の近くのx

この問題はどうすればよいですか?あるいはこれを行うための他の解決方法がありますか?

+0

ビューはまだ*リレーショナル*オブジェクトであり、定義されたタイプの行と列を持ちます。 –

+0

あなたは 'Doctors_Main'に' Department_ID'を持っているので、あなたはDepartmentでグループ化して患者数を得ることができます。 Patient countを取得するためにjoinのコメントを外しますが、 'Doctor_ID'ではなく、' Department_ID'でグループ化します。内側の選択で '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

関連する問題