如何列出多对多关系之间的所有条目并指示何时匹配

How to list all entries between many to many relationships and indicate when there is a match

我已经创建了一个数据库,我希望能够从处于多对多关系的 2 table 中检索所有条目,并指示何时存在匹配项。

您可以在附带预期结果的屏幕截图中找到带有一些虚拟数据的示例。

我看不出如何在同一 table 上独立列出所有运算符和所有标准。我用全外连接做了一些测试,但结果并不令人满意。

SELECT o.Nom,s.Nom_Standard
from Formation as f
    full OUTER join Operateurs as o
        on o.Id_Operateur = f.Fk_Operateur
    full OUTER JOIN Standards as s 
        on s.Id_Standard = ps.Fk_Standard

提前致谢。

查看我对你的问题的评论,但是有一种方法可以得到你想要的:


SELECT o.Nom, s.Nom_Standard, (CASE WHEN ISNULL(f.Id_Formation) THEN 'No' ELSE 'Yes' END) AS done
FROM Operateurs o
INNER JOIN Standards s
LEFT OUTER JOIN Formation f ON f.Fk_Operateur=o.Id_Operateur AND f.Fk_Standard=s.Id_Standard
ORDER BY o.Id_Operateur

但是这不是使用中间 table 作为标准的多对多连接 table,因此可能会导致未来的混淆。

使用cross join获取运算符和标准:

select o.Nom, s.Nom_Standard
from Operateurs o cross join
     Standards s ;

如果您想从 Formation 中引入信息,请使用 left join:

select o.Nom, s.Nom_Standard,
       (case when f.IdOperateur is not null then 'Yes' else 'No' end) as is_done
from Operateurs o cross join
     Standards s left join
     Formation f
     on o.Id_Operateur = f.Fk_Operateur
        s.Id_Standard = f.Fk_Standard;