【问题标题】:SQL query to show many/many relationship on a single output?SQL查询在单个输出上显示多/多关系?
【发布时间】:2015-01-09 01:13:25
【问题描述】:

我在 MS Sql 数据库中有 3 个表,我正在尝试通过查询将它们加入到单个表中,以便可以提取到 Excel 中。

我的表是 Person、Industry 和 PersonIndustry(连接表)。

Person 有 personId,industry 有 Industryid,PersonIndustry 表很简单:

PersonID、IndustryID。

示例记录:

人员表:

1, John Smith
2, Bob Jones
3. Jill Jane

行业表:

1, Medical
2, Insurance
3, Construction

个人行业:

1,1
1,2
3,1

我想要的输出是:

人物、姓名、行业

1, John Smith, Medical:Insurance
2, Bob Jones, N/A
3. Jill Jane, Medical

我该怎么做?

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    因为您需要 Personleft join 其他两个表中的所有行。

    然后使用for xml path 技巧在结果中对 concat 进行分组。试试这个。

    ;WITH cte
         AS (SELECT p.id,
                    p.NAME AS p_name,
                    i.NAME AS i_name
             FROM   person p
                    LEFT JOIN PersonIndustry pin
                           ON p.id = pin.person_id
                    LEFT JOIN Industry i
                           ON i.id = pin.indus_id)
    SELECT id                                  AS P_id,
           p_name,
           Stuff((SELECT ',' + i_name
                  FROM   cte b
                  WHERE  a.id = b.id
                  FOR xml path('')), 1, 1, '') AS i_name
    FROM   cte a
    GROUP  BY id,
              p_name 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多