0

I have data that looks like this in a table,

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

Is it possible to run a query that will build a row like this,

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

The table was built this way so I can add additional "Attributes" by only adding a new row. So the query needs to be able to add column based on the number of attributes an item has.

Any Ideas? Thanks

4

1 に答える 1

0

設計が悪い可能性があると思います。代替案を提案してもよろしいですか?

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

上記の設計 (最善の解決策である場合もあれば、そうでない場合もありますが、より良い解決策であることは間違いありません) を使用すると、アイテムごとに ItemAttribute レコードを追加するだけで済みます。項目、属性、およびその属性の値を指定します。現在の設計では、多対多の関係を単一のテーブルで表現しようとしていますが、これは私には実用的ではないようです (多項目対多属性)。

結論として、あなたが求めていることは静的 SQL ステートメントで実行できるとは思いません。現在のセットアップでは、最初に特定のアイテムのすべてのレコードを選択し、次に選択した属性を確認し、それに応じて select 句を作成することにより、SQL ステートメントを動的に生成できる場合があります。

于 2011-05-27T20:40:47.503 に答える