2010-07-27 10 views
3

Je suis débutant dans SQL ServerSQL Server 2005 Une requête au calcul deux tables

J'ai trois tables à l'hôpital de base de données

  1. PatientFiles
  2. OtherServices
  3. PatientDeposit

Deux requêtes pour afficher mon résultat

  • Requête numéro un. PatientFilesID d'affichage, 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 
    

Il est vrai résultat

PatientFileID | TotalOtherServices 
     14    194.00 
  • la requête numéro deux. PatientFilesID d'affichage, 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 
    

Il est vrai résultat

PatientFileID | TotalPatientDeposit 
     14    450.00 
  • Mon très fatigué pour mélanger deux requêtes

    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 
    

Il est faux résultat

PatientFileID | TotalOtherServices | TotalPatientDeposit 
     14     582.00   1350.00 

Merci de me aide à l'avance

Répondre

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

Merci Je suis très heureux –

+0

est-ce la réponse, alors? – dave

0

un coup d'oeil rapide, il semble que les valeurs sont 3 fois plus grand que prévu.
(194 * 3 = 582, 450 * 3 = 1350).

De même, dans votre deuxième requête, vous n'utilisez pas 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 

Je sais que ce n'est pas la réponse & plus des choses qui doivent être vérifiés.

+0

oui la valeur plus de 3 fois prévu mais dans la requête de remorquage je ne pas utiliser INNER JOIN parce que tout résultat dans une table –

+0

@Ramy: J'ai modifié la requête. Maintenant, il comprend 1 colonne de la table PatientsFiles. Pouvez-vous essayer et voir le résultat avec cette requête? – shahkalpesh

+0

Je veux mélanger deux requêtes Mélanger les requêtes est numéro 3 requête Merci –

Questions connexes