gpt4 book ai didi

mysql - PHP 从 3 个表中选择

转载 作者:行者123 更新时间:2023-11-29 17:02:27 25 4
gpt4 key购买 nike

我有 3 个数据库表:sitepaperlinkTable

 idSite     SiteName  
--------------------
1 AAA
2 BBB
3 CCC


idPaper PaperName
------------------------
1 Paper1
2 Paper2
3 Paper3
4 Paper4


idLinkTable idSite idPaper
----------------------------------
1 1 1
2 1 3
3 2 1

我想显示idSite=1的所有没有idPaper=1idPaper=3的论文;同样,对于 idSite=2,需要所有不带 idPaper=1 的论文。这是所需的输出:

SiteName  PaperName
------------------------
AAA Paper2
AAA Paper4
BBB Paper2
BBB Paper3
BBB Paper4

我已经尝试过这段代码:

SELECT s.SiteName AS Site, p.PaperName AS Paper
FROM site s
INNER JOIN linkTable l ON s.idSite = l.idSite
INNER JOIN paper p ON l.idPaper != p.idPaper;

这是我使用此代码时的结果:

SiteName  PaperName
------------------------
AAA Paper2
AAA Paper3
AAA Paper4
AAA Paper1
AAA Paper2
AAA Paper4
BBB Paper2
BBB Paper3
BBB Paper4

最佳答案

您需要 SitePaper 表之间的所有可能组合,但 linkTable 中已存在的组合除外。使用CROSS JOIN获得所有可能的组合,并且 NOT EXISTS消除 linkTable 中已存在的结果。请尝试以下操作:

SELECT s.SiteName AS Site, p.PaperName AS Paper
FROM site s
CROSS JOIN paper p
WHERE NOT EXISTS ( SELECT idLinkTable FROM linkTable
WHERE linkTable.idSite = s.idSite
AND linkTable.idPaper = p.idPaper
)

关于mysql - PHP 从 3 个表中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52168197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com