現在我有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)
而且它得到與值的屬性,但我想知道一兩件事: 如果有可能擺脫table attributes
中的'product_id'
列並獲取沒有該列的屬性和值?現在,例如一大堆複製的屬性:
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的方法。 –