Starck43
@Starck43
Full-stack разработчик (Python, React)

SQL запрос с поиском минимального значения и вычислением полей?

Есть вот такая таблица wp_postmeta
5ed01f2358e86626451725.png

Хочу найти минимальную цену у постов по полю 'meta_key'='_price'. Тут все просто, но вот в чем сложность:
в поле цены есть и рублевые цены и евро цены для разной тары. В качестве признака идентификации какая цена (евро или рубли) использую записи 'meta_key'='convert_to_rub' с тем же post_id. Для конвертации евро цены на лету в PHP я использую курс.

Вот теперь вопрос, который мне самому не по силам: как сформировать запрос, чтобы найти минимальную цену у поля 'meta_key'='_price', 'convert_to_rub'=0 и
'meta_key'='_price' * курс_евро, 'convert_to_rub'=1.
Предполагаю, что тут понадобится сложный запрос, так как одновременно не получить мин для вычисляемого поля и не вычисляемого. Возможно, что потребуется сделать два отдельных запроса и потом уже в PHP найти минимальное из двух.
  • Вопрос задан
  • 1640 просмотров
Решения вопроса 1
Используйте вложеные запросы

SELECT Id, MIN(Price) FROM
(
SELECT post_id AS Id, meta_value AS Price FROM wp_postmeta WHERE meta_key = '_price' AND post_id IN (SELECT post_id FROM wp_postmeta WHERE meta_key = 'convert_to_rub' AND meta_value = 0)
UNION
SELECT post_id AS Id, meta_value * {КУРС_ВАЛЮТЫ} AS Price FROM wp_postmeta WHERE meta_key = '_price' AND post_id IN (SELECT post_id FROM wp_postmeta WHERE meta_key = 'convert_to_rub' AND meta_value = 1)
)
GROUP BY Id
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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