Mysql выберите две строки в одной - PullRequest
0 голосов
/ 20 мая 2018

Мне нужно выбрать в одной строке, сгруппированной по тому же ключу, два других значения в том же поле:

TABLE
attribute_id
entity_id
value

DATA
attribute_id|entity_id|     value
          85|      220|      4740
         257|      220|image1.png 

И мне нужен этот результат:

attibute_id 85 как SKU, attribute_id 257 как ИЗОБРАЖЕНИЕ в этом результате:

SKU  | IMAGE
4740 | image1.png

Как я могу это сделать?ТИА!

Ответы [ 2 ]

0 голосов
/ 20 мая 2018

Если у вас есть attribute_id|entity_id уникальные комбинации по всей таблице, вам не нужно группировать данные, просто присоединитесь так:

http://sqlfiddle.com/#!9/1b2f60/2

SELECT a.entity_id,
       a.value AS some_attribute1,
       b.value AS image
FROM attribs a
LEFT JOIN attribs b
ON a.entity_id = b.entity_id
   AND b.attribute_id = 257
WHERE a.attribute_id = 85
0 голосов
/ 20 мая 2018

Я думаю, что это то, что вы хотите:

select ts.entity_id, ts.value as sku, ti.value as image
from t ts join
     t ti
     on ts.entity_id = ti.entity_id and
        ts.attribute_id = 85 and
        ti.attribute_id = 257;

Вы также можете решить это с помощью условного агрегирования:

select t.entity_id,
       max(case when t.attribute_id = 85 then t.value end) as sku,
       max(case when t.attribute_id = 257 then t.value end) as image
from t
group by t.entity_id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...