2010-07-27 78 views
3

我在SQL Server初學者SQL Server 2005的一個查詢計算兩條表

我在醫院數據庫三個表

  1. PatientFiles
  2. OtherServices
  3. PatientDeposit

兩個查詢可顯示我的結果

  • 查詢一號。顯示PatientFilesID,TotalOtherServices

    SELECT pf.ID AS PatientFileID, SUM(os.Quantum * os.Price) AS TotalOtherServices 
    FROM PatientsFiles pf INNER JOIN OtherServices os ON pf.ID = os.Patient_File_ID 
    WHERE pf.ID = '14' 
    GROUP BY pf.ID 
    

這是事實結果

PatientFileID | TotalOtherServices 
     14    194.00 
  • 查詢二號。顯示PatientFilesID,TotalPatientDeposit

    SELECT pd.Patient_File_ID AS PatientFileID, SUM(pd.Deposit) AS TotalPatientDeposit 
    FROM PatientsDeposits pd 
    WHERE pd.Patient_File_ID = '14' 
    GROUP BY pd.Patient_File_ID 
    

這是事實結果

PatientFileID | TotalPatientDeposit 
     14    450.00 
  • 我很累混合兩種查詢

    SELECT pf.ID AS PatientFileID, SUM(os.Quantum * os.Price) AS TotalOtherServices, 
    SUM(pd.Deposit) AS TotalPatientDeposit 
    FROM PatientsFiles pf 
    INNER JOIN OtherServices os ON pf.ID = os.Patient_File_ID 
    INNER JOIN PatientsDeposits pd ON pf.ID = pd.Patient_File_ID 
    WHERE pf.ID = '14' 
    GROUP BY pf.ID 
    

這是假的結果

PatientFileID | TotalOtherServices | TotalPatientDeposit 
     14     582.00   1350.00 

謝謝你幫我提前

回答

1
Select pf.ID as PatientFileID, 
    os.TotalOtherServices, 
    pd.TotalDeposit 
From PatientFiles pf 
    Left Join 
(Select Patient_File_ID as PatientfileID, SUM(os.Quantum * os.Price) AS TotalOtherServices 
    From OtherServices Group By Patient_File_ID) os on pf.PatientFileID = os.PatientFileID 
    Left Join 
(Select Patient_File_ID AS PatientFileID, SUM(Deposit) AS TotalPatientDeposit 
    From PatientsDeposits Group By Patient_File_ID) pd on pf.PatientFileID = pd.PatientFileID 
+0

謝謝我很開心 – 2010-07-27 06:09:45

+0

是那個答案呢? – dave 2010-07-29 23:11:28

0

快速瀏覽,它看起來像值大於預期的3倍。
(194 * 3 = 582,450 * 3 = 1350)。

此外,在您的第二個查詢中,您沒有使用INNER JOIN

SELECT pf.ID AS PatientFileID, 
SUM(pd.Deposit) AS TotalPatientDeposit 
FROM PatientsFiles pf INNER JOIN PatientsDeposits pd 
ON pf.ID = pd.Patient_File_ID 
WHERE pd.Patient_File_ID = '14' 
GROUP BY pd.Patient_File_ID 

我知道,這不是問題的答案&更多的應當檢查的事情。

+0

是3倍以上,數值越大預期 但在拖查詢我不使用INNER JOIN,因爲所有的結果在一個表 – 2010-07-27 05:12:43

+0

@Ramy:我已經修改了查詢。現在它包含PatientsFiles表中的1列。你能用這個查詢來查看結果嗎? – shahkalpesh 2010-07-27 05:16:12

+0

我要混合兩個查詢 混合查詢是3號查詢 謝謝 – 2010-07-27 05:23:31