0

我想从 4 个表中检索数据。Patient表具有idPK ,这是其他三个表中的外键ettphar并且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 个内部联接。但它没有给我结果,有什么建议吗?

4

2 回答 2

2

....Patient 表的 ID 为 PK,这是其他三个表名称中的外键:ettpharssc,其中患者仅属于一个 category。例如,患者 id pt1 存在于 3 个表中的任何一个中

根据您的陈述,您可以Patient使用表连接所有表,LEFT JOIN因为一条记录只能存在于一个表上。下面的查询使用COALESCE它返回列表中的第一个非空值。

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

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

要进一步了解有关联接的更多信息,请访问以下链接:

于 2013-04-05T13:44:30.853 回答
0

对于or - 不要||,使用“or” 你不能加入or,你需要重新格式化你的查询。

于 2013-04-05T13:42:18.853 回答