我想从SQL Server中的4个表中检索数据

时间:2013-04-05 13:39:18

标签: sql sql-server join

我想从4个表中检索数据。 Patient表的id为PK,它是其他三个表ettpharssc中的外键。患者只在一个类别中。即患者id pt1存在于3个表中的任何一个中。现在我想检索患者信息及其相关类别。

我的查询是:

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个内连接。但它没有给我结果,有什么建议??

2 个答案:

答案 0 :(得分:2)

  

....患者表的ID为PK,这是其他三个中的外键   表名: ett phar ssc 其中患者只在一个   类别即可。例如, 患者ID pt1存在于3个表中的任何一个

根据您的语句,您可以使用Patient加入表LEFT JOIN中的所有表,因为记录只能存在于一个表中。下面的查询使用COALESCE,它返回列表中int的第一个非null 值。

您唯一需要的是手动指定要在列表中显示的列名称,如下所示。

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

要进一步了解联接,请访问以下链接:

答案 1 :(得分:0)

对于或 - 不要使用||,请使用“或” 您无法加入,或者您需要重新格式化查询。