@Ellik

Как объединить поля запроса?

Приведу в пример кусок кода, который объединяет группу атрибутов с самими атрибутами и значениями в одну строку.
SELECT
     `entity`.`entity_name` as `entity_name`,
     GROUP_CONCAT(CONCAT(`group`.`title`, '-', CONCAT(`atr`.`attribute_name`, ':' , `val`.`value_name`))) as `attribute`
FROM `eav_entities` as `entity`
JOIN `products` as `products` ON (`entity`.`entity_id` = `products`.entity_id)
JOIN `eav_attributes` as `atr` ON (`products`.`attribute_id` = `atr`.`attribute_id`)
JOIN `eav_values` as `val` ON (`products`.`value_id` = `val`.`value_id`)
JOIN `group_attributes` as `group` ON (`atr`.`group_id` = `group`.`group_id`)
GROUP BY `entity`.`entity_name`


Результат такой:
Основные характеристики-Наименование:ADATA Elite S102 Pro,Основные характеристики-Производитель:ADATA,Основные характеристики-Серия:Elite S102 Pro,Основные характеристики-Модель:AS102P-256G-RGY,Основные характеристики-Объем Flash-накопителя:256 Гб,Основные характеристики-Цвета, использованные в оформлении:Черный,Основные характеристики-Размеры (ширина x высота x глубина):62 x 19 x 11 мм,Основные характеристики-Вес:13 грамм,Параметры производительности-Скорость чтения:до 100 Мб/сек,Параметры производительности-Скорость записи:до 50 Мб/сек

Т.е. Название группы - Атрибут:Значение, Название группы - Атрибут:Значение и т.д.
Решение очень "Деревянное "... Не прошу написать мне решение, просто хочу узнать принцип решения такой проблемы.
P.S. Взялся работать с EAV моделью данных, вот и пожинаю плоды
  • Вопрос задан
  • 127 просмотров
Решения вопроса 1
27cm
@27cm
TODO: Написать статус
Можно так:
SELECT
     `entity`.`entity_name`,
     `group`.`title`, 
     `atr`.`attribute_name`,
     `val`.`value_name`
FROM `eav_entities` as `entity`
JOIN `products` as `products` ON (`entity`.`entity_id` = `products`.`entity_id`)
JOIN `eav_attributes` as `atr` ON (`products`.`attribute_id` = `atr`.`attribute_id`)
JOIN `eav_values` as `val` ON (`products`.`value_id` = `val`.`value_id`)
JOIN `group_attributes` as `group` ON (`atr`.`group_id` = `group`.`group_id`);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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