Задать вопрос
@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?

Заранее огромное спасибо!
  • Вопрос задан
  • 165 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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`;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽