2010-12-22 103 views
1

我需要結合這些查詢,所以我回來了一個月,一個新的總數,並返回總數(追蹤新的和返回的用戶)的列表。我目前有以下兩個查詢。第一個是新設備(檢測頻率),第二個設備返回。我想輸出結果,所以它是一個包含每個月的行的表格,然後是包含New和Returning data的兩列。結合這些mySQL查詢

SELECT COUNT(DISTINCT (mac)) AS new, 
EXTRACT(MONTH FROM date_time) AS month 
FROM detected_devices 
WHERE client_id = 11 
AND venue_id = 1 
AND detection_frequency = 1 
GROUP BY month 

UNION ALL 

SELECT COUNT(DISTINCT (mac)) AS returning, 
EXTRACT(MONTH FROM date_time) AS month 
FROM detected_devices 
WHERE client_id = 11 
AND venue_id = 1 
AND detection_frequency > 1 
GROUP BY month 

我看了一下,但沒有找到任何關於如何用別名完成的信息。

回答

0

這是怎麼回事?

SELECT t1.month, t1.new, t2.returning FROM (query 1) as t1, (query 2) as t2 where t1.month = t2.month; 

(或加入,取決於你喜歡什麼)。

+0

中超的想法。非常感謝你!解決了頭痛。 – ajay87 2010-12-22 15:25:22

0

這只是給你一個行有兩列,但應該給你的,你如何使用別名

SELECT 
A.new, 
B.returning 
FROM 
(SELECT COUNT(DISTINCT (mac)) AS new, 
EXTRACT(MONTH FROM date_time) AS month 
FROM detected_devices 
WHERE client_id = 11 
AND venue_id = 1 
AND detection_frequency = 1 
GROUP BY month) A, 
(SELECT COUNT(DISTINCT (mac)) AS returning, 
EXTRACT(MONTH FROM date_time) AS month 
FROM detected_devices 
WHERE client_id = 11 
AND venue_id = 1 
AND detection_frequency > 1 
GROUP BY month) B