我可以在一个值上连接两个表,但是,如何使用包含两个值的第三个表连接两个具有不同值的表?如:
Table A
CustomerID
info
info
Table B
CustomerName
info
info
Table C
CustomerID
CustomerName
info
info
这是我的尝试但它失败了......
select * from [dbo].[table A] a,
[dbo].[Table B] b
left join [dbo].[Table C] c on c.CustomerID = a.CustomerID
left join [dbo].[Table C] d on d.CustomerName = b.CustomerName
正确方向上的一点非常有用。
答案 0 :(得分:1)
您的查询可能失败的原因"是因为implicit cross join
和TableA
之间有一个TableB
,然后是2个左连接。你可能也希望这些表之间有INNER JOIN
或LEFT JOIN
。
所以:
FROM
TableA, TableB
这与写作相同
FROM
TableA
CROSS JOIN TableB
你可能想要更像
这三个表FROM
TableA a
LEFT JOIN TableB b
ON a.? = b.?
LEFT JOIN TableC c
ON a.CustomerID = c.CustomerID
AND b.CustomerName = c.CustomerName
OR
FROM
TableA a
LEFT JOIN TableC c
ON a.CustomerID = c.CustomerID
LEFT JOIN TableB b
ON b.CustomerName = c.CustomerName
答案 1 :(得分:0)
SELECT *
FROM [dbo].[table A] a
LEFT JOIN [dbo].[Table C] b
on A.CustomerID = C.Customer_ID
LEFT join [dbo].[Table B] c
on c.CustomerName = B.CustomerName
这将包括A中的所有记录,B中匹配的记录以及B到C匹配的记录。
所以表和左连接的顺序很重要..你想要所有记录只存在于所有3个表中吗? A中存在的所有记录以及B和C中匹配的记录? B中存在的所有记录以及只有那些在C和A中匹配的记录?
答案 2 :(得分:0)
请尝试:
<Legend>
<Appearance Orientation="Horizontal" Width="220">
</Appearance>
</Legend>