【问题标题】:Parent Child table record - Building SQL query父子表记录——构建SQL查询
【发布时间】:2011-01-05 09:22:22
【问题描述】:

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

表名:代码

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

谢谢

【问题讨论】:

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


    【解决方案1】:

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

    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
    

    虽然对于较大的表来说笛卡尔积相当慢...所以请确保这是您真正想要的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-14
      • 1970-01-01
      • 2016-04-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多