今、私は4つのテーブルがあります。EAVのクエリとテーブル
table categories:
-id
-category
table products:
-id
-product
-price
-image
table attributes:
-id
-attribute
-product_id
table values:
-product_id
-attribute_id
-value
を私はしてクエリを実行しています:
SELECT `id`, `product`, `price`, `image` FROM `products` WHERE `category_id` = $category->id
は、今私は、このカテゴリの製品の配列を持って、それはプロパティです取得する必要があります: 次のクエリ:
SELECT `products`.`id` AS `product_id`,
`attributes`.`attribute`,
`values`.`value`
FROM `products` LEFT JOIN `attributes` ON (`attributes`.`product_id` = `products`.`id`)
LEFT JOIN `values` ON (`values`.`product_id` = `products`.`id`
AND `values`.`attribute_id` = `attributes`.`id`)
WHERE `products`.`id` IN ($ids)
そしてそれが値を持つ属性を取得だが、私は一つのことについて思ったんだけど:0123をの列をtable attributes
に取り除いて、その列のない属性と値を取得できる場合は、私はしたいものの
table attributes
-id 1
-attribute Weight
-product_id 1
-id 2
-attribute Weight
-product_id 2
:今、それは例えば複製属性の全体の束があります私の英語のため
が-id 1
-attribute Weight
申し訳ありません私のポストの一部がより詳細な説明が必要な場合は、今
を私に聞かせてください
'product'テーブルの説明から' category_id'がありません。 –
EAVの限界を脇に置くと、異なる製品が異なる属性(表 '属性 'に格納されている属性)を持つことができることを示唆しています。このような機能が欲しくないなら、@ vuceticaのアプローチを使うことができます。 –