SQL两个表之间的多个内部联接

SQL两个表之间的多个内部联接,sql,ms-access,Sql,Ms Access,我知道这是一个相当简单的问题,但我已经多年没有研究SQL了 桌面业务合作伙伴 Partner 1 2 3 和表业务关系 RelationshipNum Partner1 Partner2 Relationshiptype 000001 1 2 OCDL 我的查询应该采用Partner1和Partner2的值,并在Business Partners中搜索field Partners。如果业务关系中同一条目的两个值都存在,则应返回整个业务关系行。如果

我知道这是一个相当简单的问题,但我已经多年没有研究SQL了

桌面业务合作伙伴

Partner
1
2
3
和表业务关系

RelationshipNum Partner1 Partner2 Relationshiptype
000001          1        2        OCDL
我的查询应该采用Partner1和Partner2的值,并在Business Partners中搜索field Partners。如果业务关系中同一条目的两个值都存在,则应返回整个业务关系行。如果只有一个或没有,我们可以忽略它

这是我到目前为止得到的,但它没有返回任何值,我已经在excel中测试了数据集(太大了,不可能是一个可行的选项),并且肯定有匹配项

SELECT  [Business Relationships].*
FROM [Business Relationships] 
INNER JOIN [Business Partners] ON ([Business Partners].Partner = [Business Relationships].Partner1) 
                               AND ([Business Partners].Partner = [Business Relationships].Partner2);

尝试两个
内部联接
,如下所示

SELECT  BR.*
FROM ([Business Relationships] BR
INNER JOIN [Business Partners] BP1 ON BP1.[Partner] = BR.[Partner1])
INNER JOIN [Business Partners] BP2 ON BP2.[Partner] = BR.[Partner2]

使用double
EXISTS
查找要返回的行:

SELECT  BR.*
FROM [Business Relationships] BR
WHERE EXISTS (select 1 from [Business Partners] where Partner = BR.Partner1)
  AND EXISTS (select 1 from [Business Partners] where Partner = BR.Partner2)

永远不会返回任何副本!(取决于数据,可以加入解决方案)

假设您试图识别业务表中的业务伙伴ID没有在ButursStAsTeNeS表中定义的记录,那么您可能需要考虑在表之间创建外键关系,因此强制执行此操作。感谢您的快速响应,但在我尝试运行查询时,查询表达式“BP1.Partner=BR.Partner1内部联接[Business Partners]BP2 ON BP2.Partner=BR.Partner2”中出现语法错误(缺少运算符)。@Quinn我添加了括号,请立即尝试。