@Ellik

Как объединить атрибуты и значения в модели данных EAV?

Поясню. Имеется три таблицы продукты, атрибуты и значения. Пытаюсь получить продукт с его атрибутом и значением таким запросом.
SELECT 
	`prod`.`name`, 
	`prod`.`price`, 
GROUP_CONCAT(`atr`.`nameAttribute`) as attributeName,
GROUP_CONCAT(`val`.`attributeValue`) as attributeValue
FROM `products` as `prod`
LEFT JOIN `productAttribute` as `atr` ON `prod`.`idProduct` = `atr`.`idProduct`
LEFT JOIN `attributeValue` as `val` ON `atr`.`idAttribute` = `val`.`idAttribute`
WHERE `prod`.`idCategory` = :idCategory
GROUP BY prod.idProduct;


Результат такой:

[name] => НазваниеПродукта
[price] => 999р
[attributeName] => ИмяАтрибута1, ИмяАтрибута1, ИмяАтрибута3
[attributeValue] => ЗначениеАтрибута1, ЗначениеАтрибута2, ЗначениеАтрибута3

С помощью оператора GROUP_CONTACT удалось добиться только такого результата. Нельзя ли каким нибудь образом вывести атрибуты вида ИмяАтрибута1=ЗначениеАтрибута1, ИмяАтрибута2=ЗначениеАтрибута2?

Заранее огромное спасибо!
  • Вопрос задан
  • 159 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT `prod`.`name`, `prod`.`price`, 
       GROUP_CONCAT(CONCAT(`atr`.`nameAttribute`, '=' , `val`.`attributeValue`) as `attribute`,
FROM `products` as `prod`
LEFT JOIN `productAttribute` as `atr` ON `prod`.`idProduct` = `atr`.`idProduct`
LEFT JOIN `attributeValue` as `val` ON `atr`.`idAttribute` = `val`.`idAttribute`
WHERE `prod`.`idCategory` = :idCategory
GROUP BY `prod`.`idProduct`;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы