2013-04-15 34 views
1

我有以下SQL語句來計算基於3個Wordpress表的幾個字段。我需要的是僅包含meta_key ='odd'和meta_value> ='1.5'的結果。我在WHERE語句中嘗試過,但它不起作用,因爲這個查詢中的大多數結果都顯示爲Null。基於特定的meta_key和meta_value過濾postmeta

任何幫助非常感謝!

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' AND pm.meta_key='odd' AND pm.met.value >='1.5' 
GROUP BY (display_name) 
ORDER BY Balance DESC 

回答

1

您需要將此移動到having條款:

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='odd' AND pm.meta_value >='1.5' then 1 else 0 end) > 0 
ORDER BY Balance DESC 

這確定是否存在於每一個display_name這樣的行。

+0

感謝您的回覆。仍然不起作用,現在它顯示每個meta_value的結果,即使它小於1.5,也不會過濾結果。你有什麼想法,爲什麼?謝謝 – qebas

+1

@qebus。 。 。 meta_value如何存儲?它是一個字符串還是數字? –

+0

這是一個字符串 – qebas

相關問題