【发布时间】:2017-04-12 07:06:48
【问题描述】:
我需要一个表,其中包含(可能有几个)列从详细信息表中接收它们的值。 详细信息表基本上有这些列:
DetailID,
MasterID (foreign key to master ID),
DetailName (nvarchar()),
DetailValue (nvarchar())
到目前为止,我成功地使用了:
SELECT Master.ID,
(SELECT DetailValue FROM Detail WHERE Master.ID=Detail.MasterID AND DetailName='Name1') as Detail1,
(SELECT DetailValue FROM Detail WHERE Master.ID=Detail.MasterID AND DetailName='Name2') as Detail2
FROM Master
但是当我添加更多细节时,这会变得非常糟糕。
什么是执行此操作的有效方法?
【问题讨论】:
-
我想你可以在这里找到解决问题的方法,Dynamic Pivot
-
eav 毕竟是反模式:-)
-
感谢您的链接;直到现在我才知道这个名字。这部分不是整个数据模型,而只是可以向业务对象添加任意附加信息的部分,所以我认为可能的负面影响不会出现。
标签: sql-server join master-detail