2013-09-23 48 views
4

我試圖修改此查詢:雙組查詢?

SELECT (WEEKDAY(date) +1) dayofweek, COUNT(*) count 
FROM abanners 
WHERE iid = ? AND banner LIKE ? 
GROUP BY (WEEKDAY(date) +1) 
ORDER BY count DESC 

與此查詢我得到星期splited條目數,但如果我要得到同樣的事情由banner也分裂了什麼?

所以我想有:

banner1: entries splitted by day of week 
banner2: entries splitted by day of week 

ex: {"banner1" : "1,3,4,1,3,5,1", "banner2": "1,3,4,1,3,5,1"} 

我該怎麼辦?

+0

只需將「橫幅」添加到「SELECT」列表和「GROUP BY」。 –

+0

這樣就給了我:'array('dayofweek'=>'1','COUNT(*)'=>'4','count'=>'banner1')' – PurpleFoxy

+0

'banner'必須在「GROUP BY」的週日。 (同樣,你可以在GROUP BY中使用別名'dayofweek') - 你不需要MySQL中的完整表達式,就像使用SQL Server一樣,例如 –

回答

4

要完成此操作,只需將banner添加到SELECT列表和GROUP BY。但是,它必須位於GROUP BYdayofweek表達式之前。

SELECT 
    banner, 
    (WEEKDAY(date) +1) dayofweek, 
    COUNT(*) count 
FROM abanners 
WHERE 
    iid = ? 
    AND banner LIKE ? 
GROUP BY 
    banner, 
    dayofweek 
ORDER BY count DESC 

請注意,我已經使用了別名dayofweek在這裏GROUP BY。 MySQL允許GROUP BY中的別名,其中一些其他RDBMS將在那裏報告錯誤。