我想从4个表中检索数据。 Patient
表的id
为PK,它是其他三个表ett
,phar
和ssc
中的外键。患者只在一个类别中。即患者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个内连接。但它没有给我结果,有什么建议??
答案 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)
对于或 - 不要使用||,请使用“或” 您无法加入,或者您需要重新格式化查询。