【发布时间】:2014-09-03 17:54:54
【问题描述】:
我有一个包含项目列表(= 交易)的表,第二个包含项目子组(= 项目集)的表。 结果我需要一个新表(=结果集)显示包含表“项目集”中的项目的所有事务,例如项目“a”和“f”是事务 1 和 5 的一部分,“a”是事务 1、2、4、5 的一部分,依此类推......
如何使用 T-SQL 解决这个问题?
table1:交易
TID 项目列表 1 a,c,f 2个 3 c,f,g,h,l 4 b、a、c 5 楼table2:项目集
SID item1 item2 item3 ......... item n 1个 2 升 3 厘米 4 英尺结果集:
SID TID 1 1 1 2 1 4 1 5 2 3 3 3 4 1 4 5【问题讨论】:
-
您的数据库设计存在严重缺陷,应该重构。我不会用 T-SQL 解决这个问题,而是重新设计你的数据库。您将继续面临这种设计的问题。
-
是垂直表更好还是二进制矩阵更好?你会提出什么建议?
-
Hrrm,我不太清楚你所说的那些东西是什么意思。基本上,您需要将
itemList列拆分为一个新表,其中每个逗号分隔值都是它自己的行。 -
没问题,我已经有了。但是然后呢?
-
那么与项集相同。您的桌子设计效率极低。您应该有一个每行一个项目的表格。如果你有这个,你正在寻找的查询是微不足道的。
标签: sql sql-server tsql