2013-04-05 104 views
0

我想從4個表中檢索數據。 Patient表具有id作爲PK是其他三個表中的外鍵ett,pharssc。如果病人只在一個類別中。即患者id pt1存在於3個表中的任一個中。現在我想檢索患者信息及其相關類別。我想從SQL Server中的4個表中檢索數據

我的查詢是:

SELECT * 
FROM Patient p 
INNER JOIN ETT t 
ON p.Patient_ID = t.Patient_ID || INNER JOIN Pharmacological ph 
ON p.Patient_ID = ph.Patient_ID 

我用OR子句,因爲我只想要1內連接在同一時間執行。但它不給我結果,有什麼建議?

+0

你的意思是,病人的ID可以在一個只存在'ett','phar','ssc'中的表? – 2013-04-05 13:42:26

+0

哪個表需要加入Patinet,哪種情況? – 2013-04-05 13:42:26

回答

0

對於或 - 不要ise ||,請使用「或」 您無法使用或加入,您需要重新格式化您的查詢。

2

....病人表具有ID作爲PK這是在其他三個 表名稱外鍵:ETT藥業SSC其中患者躺在只有一個 類別 。例如,患者編號pt1存在於3個表中的任一個中。

根據您的說法,您可以加入所有表Patient使用LEFT JOIN表,因爲記錄只能在一個表中。下面的查詢使用COALESCE,它返回第一個非空值與int列表。

您需要的唯一手動操作是手動指定想要在列表中顯示的列名稱,如下所示。

SELECT a.*, 
     COALESCE(t.colA, p.ColA, s.ColA) ColA, 
     COALESCE(t.colB, p.ColB, s.ColB) ColB, 
     COALESCE(t.colN, p.ColN, s.ColN) ColN 
FROM Patient a 
     LEFT JOIN ETT t 
      ON a.Patient_ID = t.Patient_ID 
     LEFT JOIN Phar p 
      ON a.Patient_ID = p.Patient_ID 
     LEFT JOIN SSC s 
      ON a.Patient_ID = s.Patient_ID 

爲了進一步獲得更多的知識有關加入,請訪問以下鏈接: