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)。