0

我的表格中有这样的数据,

Item Attribute Value
---- --------- -----
cup  color     Red
cup  size      16
cup  type      Plastic

是否可以运行将构建这样一行的查询,

Item color size type
---- ----- ---- ----
cup  Red   20   Plastic

该表是以这种方式构建的,因此我可以通过仅添加新行来添加其他“属性”。因此查询需要能够根据项目的属性数量添加列。

有任何想法吗?谢谢

4

1 回答 1

0

我认为你的设计可能很糟糕。我可以建议一个替代方案吗?

Item(ID, NAME, DESCRIPTION, ETC...) 属性(ID, NAME, DESCRIPTION) ItemAttribute(ID, ItemID, AttributeID, Value)

使用上述设计(可能是也可能不是最好的解决方案,但肯定会更好),您可以简单地为每个项目添加一个 ItemAttribute 记录。您将指定项目、哪个属性以及该属性的值。使用您当前的设计,您试图在单个表中表示多对多关系,这对我来说似乎不切实际(许多项目对多属性)。

总之,我不认为你所要求的可以用静态 SQL 语句来完成。使用您当前的设置,您可以通过首先选择给定项目的所有记录,然后检查您选择的属性,并相应地构造您的 select 子句来动态生成 SQL 语句。

于 2011-05-27T20:40:47.503 回答