将第三个表添加到查询中时,查询将返回列上的重复项
表A
A.AccId
A.AccNr
A.EntId
表B
B.EntName
B.EntId
表C
C.AccNr
C.CustomerNr
SELECT A.AccID, A.AccNr, A.EntId, B.EntName, B.EntId, C.AccNr,C.CustomerNr, C.EntName
FROM ((Cat.dbo.A
INNER JOIN Cat.dbo.B ON A.EntId = B.EntId)
INNER JOIN Dog.dbo.C ON B.EntName = C.EntName
答案 0 :(得分:0)
您的查询需要首先更新。我在表C中看不到EntName列。
存在重复的可能性,如果表C中有很多匹配的行,则在与表C联接时重复表A和表B中的行。
如果在C中有许多与EntName匹配的记录,那么您将有重复记录。如果您不想重复,则必须应用DISTINCT
SELECT DISTINCT A.AccID, A.AccNr, A.EntId, B.EntName, B.EntId, C.AccNr,C.CustomerNr
FROM Cat.dbo.Accounts
INNER JOIN Cat.dbo.B ON A.EntId = B.EntId
INNER JOIN Dog.dbo.C ON B.EntName = C.EntName
或者如果重复是由于表C中的重复记录引起的,则可以在JOIN之前将其过滤掉。
SELECT A.AccID, A.AccNr, A.EntId, B.EntName, B.EntId, C.AccNr,C.CustomerNr
FROM Cat.dbo.Accounts
INNER JOIN Cat.dbo.B ON A.EntId = B.EntId
INNER JOIN (SELECT DISTINCT CustomerNr, EntName FROM Dog.dbo.C) AS C ON B.EntName = C.EntName;