【发布时间】:2013-09-08 01:04:33
【问题描述】:
我必须使用以下 SQL Server 数据库结构来查询数据。模型可能是错误的;如果是这样的话,我很感激争论,所以我可以要求改变。如果没有,我需要一个查询来获取我将在下面详述的格式的选项卡式数据。
结构如下:
CLIENTS:
ClientID ClientName
-----------------------
1 James
2 Leonard
3 Montgomery
ATTRIBUTES:
AttributeID AttributeName
-----------------------------
1 Rank
2 Date
3 Salary
4 FileRecordsAmount
ATTRIBUTES_STRING:
ClientID AttributeID AttributeStringValue
1 1 Captain
2 1 Chief Surgeon
3 1 Chief Engineer
ATTRIBUTES_NUMERIC:
ClientID AttributeID AttributeNumericValue
1 4 187
2 4 2
3 4 10
我需要的结果如下:
RESULTS:
----------------------------------------------------------
ClientID ClientName Rank FileRecordsAmount
1 James Captain 187
2 Leonard Chief Surgeon 2
3 Montgomery Chief Engineer 10
我怎样才能做到这一点?
非常感谢!
编辑:这里(对我来说)具有挑战性的问题是属性是动态的......我有 5 个属性表(ATTRIBUTES_STRING、ATTRIBUTES_NUMERIC、ATTRIBUTES_DATE、ATTRIBUTES_BIT、ATTRIBUTES_INT),用户应该能够设置它自己的属性。
【问题讨论】:
-
好吧;到目前为止,我正在通过代码进行管理;我在 ATTRIBUTES_XXX 表上运行了几个选择并检查是否存在(我有 5 个;字符串、日期、位、双精度和整数的属性表)。我想使用带有直接查询的“更清洁”的解决方案...
-
Read this true story about how EAV tables sank a whole company 然后遵循给出的建议:RUN LIKE HELL! - EAV 是魔鬼 - 要么重新架构,要么离开工作.....
-
感谢marc的文章,很有意思;但是这种情况并不难(1 个有 240 个字段的表?天哪!);整个布局有 40 个表,“eav”仅“影响”1 个表。好吧,除此之外,您对动态属性有什么建议?谢谢!
标签: sql sql-server entity-attribute-value