Проверка значения max (CASE WHEN) в предложении where - Edit: HAVING CLAUSE - PullRequest
0 голосов
/ 15 мая 2019

У меня есть этот запрос из таблицы WordPress.Я строю API вне WordPress с другой базой данных.Я пытаюсь получить продукты instock только .

Так что это - максимальный случай, когда - может дать два значения, instock или outofstock .

max( CASE WHEN pm.meta_key = "_stock_status" and product_id = pm.post_id THEN pm.meta_value END ) as product_stock_status

Как я могу получить только значения запасов в этом запросе?

Полный запрос:

SELECT product_id, product_language, product_name, 
max( CASE WHEN pm.meta_key = "_price" and product_id = pm.post_id THEN pm.meta_value END ) as product_price, 
max( CASE WHEN pm.meta_key = "_stock_status" and product_id = pm.post_id THEN  pm.meta_value END ) as product_stock_status
FROM search_table
INNER JOIN postmeta pm ON product_id = pm.post_id
WHERE product_language LIKE "en"
GROUP BY product_id
ORDER BY RAND() LIMIT 15

Я надеюсь получить случайные товары с product_stock_status instock .


РЕДАКТИРОВАТЬ: РЕШЕНИЕ

Используйте предложение HAVING после GROUP BY, т.е. HAVING product_stock_status = 'instock' - Ник

SELECT product_id, product_language, product_name, 
max( CASE WHEN pm.meta_key = "_price" and product_id = pm.post_id THEN pm.meta_value END ) as product_price, 
max( CASE WHEN pm.meta_key = "_stock_status" and product_id = pm.post_id THEN  pm.meta_value END ) as product_stock_status
FROM search_table
INNER JOIN postmeta pm ON product_id = pm.post_id
WHERE product_language LIKE "en"
GROUP BY product_id
HAVING product_stock_status = 'instock'
ORDER BY RAND() LIMIT 15
...