2013-07-22 13 views
-3

我有以下兩個查詢:如何從SQL查詢合併兩個數組?

SELECT date(FROM_UNIXTIME(user_reg_date)) 'Current Date', COUNT(*) 'registered_user' 
FROM users 
WHERE user_reg_date >=1341100800 
AND user_reg_date <=1374451200 
GROUP BY date(FROM_UNIXTIME(user_reg_date)) 

SELECT date(FROM_UNIXTIME(user_last_login)) 'Current Date', COUNT(*) 'logged_in_user' 
FROM users 
WHERE user_last_login >=1341100800 
AND user_last_login <=1374451200 
GROUP BY date(FROM_UNIXTIME(user_last_login)) 

現在我想合併兩個數組這是我從上面的查詢得到了和每個數組元素應爲以下形式。

date = > array(registered_user, logged_in_user) 

任何人都可以在這方面幫助我嗎?提前致謝。

回答

1

你可以做一個非常簡單的UNION ALL和日期後用SUM來獲取值;

SELECT DATE(FROM_UNIXTIME(date)) date, 
     SUM(registered_user) registered_user, 
     SUM(logged_in_user) logged_in_user 
FROM (
    SELECT user_reg_date date, 1 registered_user, 0 logged_in_user FROM users 
    UNION ALL 
    SELECT user_last_login, 0 registered_user, 1 logged_in_user FROM users 
) a 
WHERE date >= 1341100800 AND date <= 1374451200 
GROUP BY DATE(FROM_UNIXTIME(date)); 
+1

再次感謝你。您的查詢確實對我有幫助。按照我的要求,我完美地完成了工作。我已經接受了你的回答,並且也贊成了。 – PHPLover

+0

:與上述查詢類似,我想獲取reg_date和last_login日期落在本週,上週和最後兩週內的相同記錄計數。我怎麼能寫這些東西在WHERE條件? – PHPLover

+0

無法測試,但WHERE YEARWEEK(FROM_UNIXTIME(date))= YEARWEEK(NOW())',W​​HERE YEARWEEK(FROM_UNIXTIME(date))= YEARWEEK(DATE_SUB(NOW(),INTERVAL 1 WEEK)'' WHERE YEARWEEK(FROM_UNIXTIME(date))> = YEARWEEK(DATE_SUB(NOW(),INTERVAL 1 WEEK))看起來很有希望。 –

2

使用UNION

SELECT date(FROM_UNIXTIME(user_reg_date)) 'Current Date', COUNT(*) 'registered_user' 
FROM users 
WHERE user_reg_date >=1341100800 
AND user_reg_date <=1374451200 
GROUP BY date(FROM_UNIXTIME(user_reg_date)) 

UNION 

SELECT date(FROM_UNIXTIME(user_last_login)) 'Current Date', COUNT(*) 'logged_in_user' 
FROM users 
WHERE user_last_login >=1341100800 
AND user_last_login <=1374451200 
GROUP BY date(FROM_UNIXTIME(user_last_login)) 

但仔細與這兩個表have.Try打電話給他們使用的表對象像

table1.id,table2.id 

的重複列考慮到id已經存在於兩個表。

+0

我試過這個,但它只給出current_date和registered_user。其實我想要一個數組中的計數。 – PHPLover

+0

你忘了像'as'那樣寫'COUNT(*)''registered_user' – Gautam3164

+0

@phpLover:什麼阻止你這麼做?在你的問題中,我看不到任何代碼表明你實際上已經嘗試過,所以讓其他地方猜到答案只是然後告訴他們你已經嘗試過了,這是有點不公平的。你不這麼認爲嗎? – hakre