一尘不染

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

sql

给定这种表结构,我想弄平多对多关系,并将一个表的“名称”字段中的值转换为列标题,并将同一表中的数量转换为列值。当前可行的想法是将值放入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

阅读 143

收藏
2021-03-08

共1个答案

一尘不染

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

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

2021-03-08