Sql 如果其中一个表中存在行,则无法显示我的行
有三个表,Sql 如果其中一个表中存在行,则无法显示我的行,sql,oracle,oracle10g,Sql,Oracle,Oracle10g,有三个表,AGR\u SALVAGUARDAS和AGR\u MIT\u FREC\u TIPO包含数据,但AGR\u MIT\u FREC\u ACT为空。如果ID\u SALVAGUARDA存在于AGR\u MIT\u FREC\u TIPO或AGR\u MIT\u FREC\u ACT中,但没有显示数据,我想提取AGR\u SALVAGUARDAS项。我有什么问题 SELECT SAL.ID_SALVAGUARDA, SAL.DESCRIPCION, SAL.EFICACIA FROM (
AGR\u SALVAGUARDAS
和AGR\u MIT\u FREC\u TIPO
包含数据,但AGR\u MIT\u FREC\u ACT
为空。如果ID\u SALVAGUARDA存在于AGR\u MIT\u FREC\u TIPO
或AGR\u MIT\u FREC\u ACT
中,但没有显示数据,我想提取AGR\u SALVAGUARDAS
项。我有什么问题
SELECT SAL.ID_SALVAGUARDA, SAL.DESCRIPCION, SAL.EFICACIA
FROM ( Select ID_SALVAGUARDA, ID_AMENAZA
FROM AGR_MIT_FREC_TIPO
WHERE ID_AMENAZA = 5043) MFT,
( Select ID_SALVAGUARDA, ID_AMENAZA
FROM AGR_MIT_FREC_ACT
WHERE ID_AMENAZA = 5043) MFA,
AGR_SALVAGUARDAS SAL
WHERE SAL.ID_SALVAGUARDA = MFT.ID_SALVAGUARDA
OR SAL.ID_SALVAGUARDA = MFA.ID_SALVAGUARDA
GROUP BY SAL.ID_SALVAGUARDA, SAL.DESCRIPCION, SAL.EFICACIA
我正在使用oracle10g。提前感谢您需要使用
左连接
。事实上,只要遵循一条简单的规则:在from
子句中不要使用逗号。始终使用显式join
语法:
SELECT SAL.ID_SALVAGUARDA, SAL.DESCRIPCION, SAL.EFICACIA
FROM AGR_SALVAGUARDAS SAL LEFT JOIN
AGR_MIT_FREC_TIPO MFT
ON SAL.ID_SALVAGUARDA = MFT.ID_SALVAGUARDA AND MFT.ID_AMENAZA = 5043 LEFT JOIN
AGR_MIT_FREC_ACT MFA
ON SAL.ID_SALVAGUARDA = MFA.ID_SALVAGUARDA AND MFA.ID_AMENAZA = 5043
WHERE MFT.ID_SALVAGUARDA IS NOT NULL OR
MFS.ID_SALVAGUARDA IS NOT NULL
GROUP BY SAL.ID_SALVAGUARDA, SAL.DESCRIPCION, SAL.EFICACIA;
非常感谢你!。我的问题是逗号(和连接xD)。