@Azzrael

Как построить запрос MySQL ( таблица вида meta_key / meta_value )?

Есть таблица

id | meta_key | meta_value
-------------
1 | color | red
1 | price | 10
2 | color | red
2 | price | 20
3 | color | blue
3 | price | 10

Нужно получить id у которых color=red и price=10 . Хочется это в один запрос. Можно придумать что-то проще пивотов или перебора?
  • Вопрос задан
  • 310 просмотров
Решения вопроса 1
@Azzrael Автор вопроса
На стеке предложили отличное рабочее решение.
select id
from t
where (meta_key = 'color' and meta_value = 'red') or
      (meta_key = 'price' and meta_value = '10')
group by id
having count(distinct meta_key) = 2;

В having count(distinct meta_key) соотв. количество проверяемых пар ключ/значение. Если проверяем в паре диапазон то так:
(meta_key = 'price' and meta_value > 100 and meta_value <= 100500)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@zhainar
Гуглю за вас
select id,
max( case when meta_key ='color' then meta_value else '' end ) as 'color',
max( case when meta_key ='price' then meta_value else '' end ) as 'price'
from table group by id
Ответ написан
Ваш ответ на вопрос

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

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