2016-01-23 55 views
0

我有這樣MySQL的使用範圍條件算

select newscategory.CategoryName, count(distinct newsmain.id) 
from newsmain join newscategory on 
newscategory.CategoryName = newsmain.Category 
group by CategoryName 

查詢並返回一個正確的結果,就像這樣:

CategoryName count(distinct newsmain.id) 
Acupunctura 1 
Neurologie 1 
Test Category 2 

「newsmain」表有一個「AppPublished」日期時間字段和我想要做的是添加一個條件的計數,將執行計數的基礎上,如果「AppPublished」是在兩個日期時間變量的範圍內。舉一個例子,我需要這樣的結果:

CategoryName count(distinct newsmain.id) 
Acupunctura 0 
Neurologie 0 
Test Category 1 

我需要做一個子查詢或者是有辦法的一些條件添加到該查詢?

因爲此查詢中添加的任何條件都會導致不必要的「CategoryName」列過濾。

回答

1

可以使用CASE條件像

select newscategory.CategoryName, 
count(CASE WHEN AppPublished BETWEEN date1 and date2 THEN distinct newsmain.id END) 
from newsmain join newscategory on 
newscategory.CategoryName = newsmain.Category 
group by CategoryName 

(OR)這樣

select newscategory.CategoryName, 
sum(CASE WHEN AppPublished BETWEEN date1 and date2 THEN 1 ELSE 0 END) 
from newsmain join newscategory on 
newscategory.CategoryName = newsmain.Category 
group by CategoryName 
+0

第二個解決方案工作就像一個魅力,謝謝。 –