当前位置: 首页 > 面试题库 >

如何查询多对多表(一个表的值成为列标题)

梁丘宏硕
2023-03-14
问题内容

给定这种表结构,我想弄平多对多关系,并将一个表的“名称”字段中的值转换为列标题,并将同一表中的数量转换为列值。当前可行的想法是将值放入Dictionary(哈希表)中并以代码表示此数据,但我想知道是否存在SQL方式来执行此操作。我还将Linq-
to-SQL用于数据访问,因此Linq-to-SQL解决方案将是理想的选择。

[TableA](整数ID)

[TableB](整数ID,字符串名称)

[TableAB](int tableAId,int tableBId,int数量)

fk:TableA.Id加入TableAB.tableAId

fk:TableB.Id加入TableAB.tableBId

有没有一种方法可以查询三个表并返回一个结果,例如:

TableA
[Id]
1

TableB
[Id], [Name]
1, "Red"
2, "Green"
3, "Blue"

TableAB
[TableAId], [TableBId], [Quantity]
1           1           5
1           2           6
1           3           7

Query Result:
[TableA.Id], [Red], [Green], [Blue]
1,           5,     6,       7

问题答案:

对于TSQL解决方案,请使用PIVOT

有关LINQ解决方案,请参见167304。



 类似资料:
  • 问题内容: 我有桌子: 我想写一个返回BookName,FirstName,LastName,RubricName的SELECT查询。 我有两个单独的查询,但我不知道如何在一个选择中编写此查询。这就是我得到的: 它工作正常,但如何在一个选择中编写? 我尝试这样做,但是不起作用: 它返回错误: 问题答案: 试试这个查询

  • 我有一张像下面这样的桌子, ID姓名电子邮件性别 这个表中已经有了一些值。 现在,我用下面的查询来添加年龄。 alter table tblPerson add Age int 现在,我的行结构看起来像 ID姓名电子邮件性别年龄 现在,我有了年龄表。有任何查询可以将这些年龄添加到新创建的列中吗? 所有年龄都是根据ID排序的。因此,如果需要逻辑,则不需要。我只需要添加列数据。 谢谢

  • 如何在列表页面中查询/表示一对多信息 示例数据-我希望表格呈现为 为了构造上表,我必须执行以下操作来构造每一行。 是否有更好的方法为用户获取|缓存标记,这样就不需要花费更长的时间来构建上述用户列表。

  • 问题内容: 我有两个表A和Band,A与B之间的关系是A —>一对多—> B 通常,对于A的每条记录,我都有一个B的记录。 我正在尝试编写一个查询,该查询将为我提供A的 唯一 记录列表,其中B中的 记录 超过 一个(多个) 。 我很困惑,因为我只完成了基本的sql查询,而这对我来说似乎很复杂。 可以请一个人指导我正确答案或给我解决方案。 编辑: 好吧,我尝试了下面的事情,它给了我一个错误 从A a

  • 我有2个具有多对多关系的实体User和AcCountBase。我需要从连接表中选择所有具有选定用户ID的AcCountBase对象。我尝试了一些连接查询,但不起作用。

  • 问题内容: 我有一张像这样的桌子: 我的问题是;我想找到谁有一个叫亚历克斯的孩子。 我无法在SQL中使用,因为在同一单元格中有多个名称。 所以我用-看起来很聪明,但同时我像Alex一样开始一切:( Alexandre或我想获得dia,但结果是dia和diana :( 如何获得该数据类型的单个Alex? 我希望我能用我的英语不好来解释我的问题:D 问题答案: 最好的解决方案是规范您的架构。您应该有一