Теперь у меня есть 4 таблицы:
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)
И он получает атрибуты со значениями, но меня интересует одно: возможно ли избавиться от столбца 'product_id'
в table attributes
и получить атрибуты и значения без этого столбца? Теперь это целая куча дублирующих атрибутов, например:
table attributes
-id 1
-attribute Weight
-product_id 1
-id 2
-attribute Weight
-product_id 2
Пока я хочу просто:
-id 1
-attribute Weight
извините за мой английский, если какая-то часть моего сообщения нуждается в дополнительных пояснениях, пожалуйста, дайте мне сейчас
category_id
в описании вашей таблицыproduct
. - person ypercubeᵀᴹ   schedule 21.01.2012attribute
). Если вам не нужна такая функциональность, вы можете использовать подход @vucetica. - person ypercubeᵀᴹ   schedule 21.01.2012