【问题标题】:TSQL - Combine from one table into another with single rowTSQL - 从一个表合并到另一个单行
【发布时间】:2013-06-18 22:17:19
【问题描述】:

我有三个表格,如下所述。

tblNews

NewsId | Title       |
======================
1      | Hello World |

tblSectionItems

rID  | SectionID | NewsID     |
=================================
 1   |   1       | 1          |
 2   |   2       | 1          |

tblSections

SectionId | SectionName | 
===================================
1         | Economy     |
2         | Politics    |

我将如何进行并有一个查询输出如下?甚至更好我如何使用 Linq - EF 做到这一点?

| NewsID | Title        | SectionNames
=====================================
| 1      | Hello World  | Economy, Politics   |

到目前为止,我尝试过的是使用 JOINS,而 JOINS 又会输出类似的东西

| NewsID | Title        | SectionNames
=====================================
| 1      | Hello World  | Economy   |
| 1      | Hello World  | Politics  |

这不是想要的输出。

对文章或教程的任何帮助或指导将不胜感激。谢谢..

【问题讨论】:

标签: sql sql-server tsql


【解决方案1】:

类似

select
 NewsID,
 Title,
 STUFF((SELECT ', '+ s.SectionName
  FROM tblSectionItems si
  inner join tblSections s on s.SectionId=si.SectionId
  WHERE si.NewsID= n.NewsID
  For XML PATH('')
 ),1,2,'') as IDs
FROM tblNews n

【讨论】:

  • 工作得很好。非常感谢@Alexander。与此同时,我会去阅读那些我以前从未见过的 STUFF 和 XML PATH(我不是 sql 人..)
  • STUFF 是普通的字符串函数,但是 "For XML PATH('')" 在这里是丑陋的魔术,但它通常用于表到列表的操作
  • 在阅读它们时意识到,但不幸的是,Entity Framework 不支持“For XML PATH('').. 我用你的代码创建了一个 SP,看看我是否可以使用它EF .. 再次非常感谢。
猜你喜欢
  • 2019-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-13
  • 1970-01-01
  • 2020-12-13
  • 1970-01-01
相关资源
最近更新 更多