【问题标题】:combine multiple rows/ columns into single row SQL ASP.NET将多行/列组合成单行 SQL ASP.NET
【发布时间】:2013-12-31 18:04:39
【问题描述】:

我有一个用户表,一个包含角色 ID 和名称的角色表,以及一个包含角色 ID 和用户 ID 的用户角色表。用户可以有多个角色,因此我的选择查询可能会返回多条记录。有没有一种方法可以通过 sql proc 或在 VB 中将每个 roleID 组合成一行,并为附加的 roleID 添加一个新列(如果存在)?我有一个用于角色管理的网格视图,它有 3 列用于角色,每列都有一个允许添加或删除角色的复选框。

【问题讨论】:

  • 您应该将显示逻辑与数据库架构分开。 “按原样”检索您的数据,然后重新创建新的数据源对象(例如新的 DataTable)

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


【解决方案1】:

不要在单个数据库列中存储多个项目;你违反了第一范式,这不是好的数据库设计。

在您的情况下,您可以创建一个视图,将您的多个角色聚合到一个“列”(逗号分隔)中,然后将 gridview 的数据源基于新视图,而不是基表。

你可以通过存储过程来做同样的事情。

【讨论】:

  • 我实际上并不想将它们分隔为单个列,而是仅当用户具有多个角色时才在该行上添加一个附加列。我确实明白你的意思,我想让它正常化。
  • 视图或存储过程可能仍然是您的解决方案 Bob
猜你喜欢
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-21
  • 1970-01-01
  • 2017-10-03
  • 2014-03-08
相关资源
最近更新 更多