SQL выборка по нескольким парам ключей и значений с цифровыми значениями
Есть таблица "postmeta" с полями "meta_id"(ПК), "post_id", "meta_key" и "meta_value". В связке "meta_key" и "meta_value" находятся следующие данные:
"meta_key" | "meta_value"
------------+-------------
"min_price" | 1000
"max_price" | 150000
"min_days" | 7
"max_days" | 30
/* сюда же могут быть включены различные параметры типа: */
"pasport" | 1
"student" | 1
Нужно выбрать из таблицы все "post_id", где цена будет = 100000, количество дней = 14, и есть ключ "pasport" со значением "1".
Ответы (1 шт):
Автор решения: Akina
→ Ссылка
SELECT post_id
FROM postmeta
GROUP BY post_id
HAVING 100000 BETWEEN MIN(meta_value * (meta_key = 'min_price'))
AND MAX(meta_value * (meta_key = 'max_price'))
AND 14 BETWEEN MIN(meta_value * (meta_key = 'min_days'))
AND MAX(meta_value * (meta_key = 'max_days'))
AND SUM(meta_key = 'pasport' AND meta_value = 1)