2012-08-01 66 views
1
SELECT * FROM TableC 
    INNER JOIN TableB ON TableB.mid=TableC.mid 
    INNER JOIN TableA ON TableA.userid=(
             SELECT distinct userid 
              FROM TableB) 

子查詢返回的值超過1個。子查詢在sql服務器中返回了超過1個值

Medical_Master

 MedicalID MedicalName 
     1(pk)  abc 
     2   xyx 
     3   pqr 

Child_Medical_Master

 ChildMID MedicalID Station Name 
     1(pk) 1(fk)  bnb  mfk 
     2  1   def  rwr 
     3  2   re  wrw  

Medical_Visit

 VTID PMID RFMID age 
     1(pk) 2(fk) 1  34 
     2  2  3  45 
     3  3  1  45 
     4  1  2  44 
     5  2  2  76 

Medical_Study

 UID VTID ChildMID SMID Date time 
     1(pk) 1(fk) 1  1  kk jdj 
     2  2  3  2  kdf lfl 
     6  3  2  3  rgr rtr 

Doctor_Master

 RFMID Doctorname 
     1(pk) mr.john 
     2  mr.jack 
     3  mr.jim 

PAtient_Master

 PMID Firstname LastNAme 
     1(pk) df   ere 
     2  rwe  rwer 
     3  rwr  fwr 

Study_Master

 SMID MedicalID Description Duration 
     1(pk) 1(fk)  fdf   efe 
     2  1   ddf   dfdf 
     3  2   df   ef 

我想從表中的這些列如何應該是我的正確查詢?

UID,PMID,FIRSTNAME,LASTNAME,AGE,MEDICALNAME,DESCRIPTION,STATION,DATE,DoctorName 

回答

4

假設你不想做一個正常的加入,是有目的的子查詢在一個正常的加入:

你要麼需要限制什麼是進入這樣的子查詢:

select * from TableC 
inner join TableB on TableB.mid=TableC.mid 
inner join TableA on TableA.userid=(select distinct userid from TableB where userid=3) 

或更改這樣的主查詢:

select * from TableC 
inner join TableB on TableB.mid=TableC.mid 
inner join TableA on TableA.userid in (select distinct userid from TableB) 

好,我知道的代碼,並提出了sqlfiddle讓你看到它的工作。

select 
    medical_study.uid, 
    patient_master.PMID, 
    patient_master.firstname, 
    patient_master.surname, 
    medical_visit.age, 
    medical_master.medicalName, 
    study_master.descripto, 
    child_medical_master.station, 
    medical_study.dater, 
    doctor_master.doctorname 
from 
    medical_master 
    join child_medical_master 
     on medical_master.medicalID=child_medical_master.medicalID 
    join medical_study 
     on child_medical_master.childMID=medical_study.childMID 
    join medical_visit 
     on medical_study.VTID=medical_visit.VTID 
    join doctor_master 
     on medical_visit.RFMID=doctor_master.RFMID 
    join patient_master 
     on medical_visit.PMID=patient_master.PMID 
    join study_master 
     on medical_master.medicalID=study_master.medicalID 
+0

不是從上面的查詢得到的結果是什麼,我想 – 2012-08-01 11:11:40

+0

@Nikhil好了,你可以編輯您的問題,包括表結構及說明您希望數據是從這個查詢返回? – Fluffeh 2012-08-01 11:12:44

+0

好吧,只需一分鐘,我會編輯 – 2012-08-01 11:14:20

0

試試這個:

select * from TableC 
    inner join TableB on TableB.mid=TableC.mid 
    inner join TableA on TableA.userid=TableB.userid