我有3个数据库表: site
, paper
以及 linkTable
.
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
我想把所有的文件都拿出来 idPaper=1
, idPaper=3
为了 idSite=1
; 同样适用于 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
1条答案
按热度按时间mccptt671#
你需要所有可能的组合
Site
以及Paper
表,除了已存在于linkTable
. 使用交叉联接来获取所有可能的组合,而不存在则消除linkTable
. 请尝试以下操作: