如何在sql中连接这些表

时间:2014-05-19 13:33:54

标签: sql sql-server join

我有这些表,并想查询它们以显示所有客户端及其组(如果有),下图描述了这种情况: table contents

如何连接表以使用sql server获取结果?

1 个答案:

答案 0 :(得分:0)

这看起来像是一个教授CROSS JOIN的课程。因为您希望在结果中为客户端和组的每个交集添加一行,无论它是否有效,您希望交叉连接这些表,然后查看client_group中是否存在匹配的记录。在一个正常工作的应用程序中,这种交叉连接可能会很快变得难以处理,只有几千个组和客户端,您将拥有数百万个结果。

这样的事情应该得到你的笛卡尔结果,看看是否找到匹配的记录:

SELECT 
    c.id 'client_id', g.Id 'group_id', ISNULL(cg.client_id)
FROM
    (client c 
    CROSS JOIN group g)
    LEFT JOIN client_group cg ON c.id = cg.client_id AND g.id = cg.group_id

更多关于加入: What is the difference between Left, Right, Outer and Inner Joins?