SQL两个表之间的多个内部联接
我知道这是一个相当简单的问题,但我已经多年没有研究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。如果业务关系中同一条目的两个值都存在,则应返回整个业务关系行。如果
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我添加了括号,请立即尝试。