У меня есть следующая инструкция SQL для вычисления нескольких полей на основе таблиц wp_postmeta, wp_post и wp_user. Мне нужно включить только результаты, где все сообщения имеют meta_key = 'key1' и meta_value> = '1.5'. Я попытался в заявлении ниже, но он не фильтрует, все равно показывает каждую запись.Отфильтровать заявление MySQL на основе двух столбцов (meta_key и meta_value)
Любая помощь очень ценится!
SELECT (display_name) AS 'user',
SUM(Case When meta_key = 'status' Then meta_value = 'won' else Null End) AS 'Won',
SUM(Case When meta_key = 'status' Then meta_value = 'lost' else Null End) AS 'Lost',
COUNT(Case When meta_key = 'odd' Then meta_value else Null End) AS 'Total',
ROUND (AVG(Case When meta_key = 'odd' Then meta_value else Null End), 2) AS 'Avg odd',
ROUND (AVG(Case When meta_key = 'bet' Then meta_value else Null End), 2) AS 'Avg bet',
ROUND (SUM(Case When meta_key = 'balance' Then meta_value else Null End), 2) AS 'Balance'
FROM wp_postmeta pm
INNER JOIN wp_posts p ON pm.post_id = p.ID
INNER JOIN wp_users u ON p.post_author = u.ID
WHERE Month(post_date) = MONTH(CURRENT_DATE) AND p.post_status='publish'
GROUP BY (display_name)
HAVING SUM(CASE WHEN pm.meta_key='key1' AND pm.meta_value >='1.5' THEN 1 ELSE 0 END) > 0
ORDER BY Balance DESC
Привет, я замечаю что-то. Является ли pm.meta_value строкой или числом в вашем фактическом дизайне? – Edper
Привет, это строка. – qebas