父子表记录 - 构建SQL查询

时间:2010-01-15 04:51:34

标签: asp.net sql sql-server sql-server-2005

这是我的表格和这些表格的数据

表名:代码

CID Code
1   abc
2   def
3   xyz

表名:详细信息

ID  Name    CID
1     a       1
2     b       2

结果表:

ID      Code    Name
1       abc     a
2       abc     Null
3       def     b
4       def     Null
5       xyz     Null
6       xyz     Null

我从代码表获取所有记录,并且每个代码都必须从详细信息表中获取所有行,如果某些代码具有其需要值的值,如果没有那么Null

谢谢

1 个答案:

答案 0 :(得分:3)

听起来你正在寻找笛卡尔积:

SELECT
    c.CID * d.ID AS ID,
    c.Code,
    CASE
        WHEN c.CID = d.CID THEN d.Name
        ELSE NULL
    END AS Name
FROM Code c
CROSS JOIN Details d

虽然大型餐桌的笛卡尔产品速度很慢......所以请确保这是您真正想要的。