2010-12-22 15 views
1

Ich muss diese Abfragen kombinieren, so bekomme ich eine Liste von Monaten, mit einer neuen Summe, und die Summe zurück (um neue und wiederkehrende Benutzer zu verfolgen). Ich habe derzeit diese zwei Abfragen unten. Die erste zählt Geräte, die neu sind (Erkennungsfrequenz), die zweite zählt als zurück. Ich möchte die Ergebnisse ausgeben, also ist es eine Tabelle mit Zeilen für jeden Monat, dann zwei Spalten mit neuen und wiederkehrenden Daten.Kombinieren Sie diese mySQL-Abfragen

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 

Ich habe mich umgeschaut, aber keine Informationen darüber gefunden, wie das mit Aliases gemacht werden kann.

Antwort

0

Was ist damit?

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

(oder eine Verbindung, je nachdem, was Sie bevorzugen).

+0

Super-verwenden können. Vielen Dank! Löste Kopfschmerzen. – ajay87

0

Dies gibt Ihnen nur eine Zeile mit zwei Spalten, aber sollten Sie eine Vorstellung davon, wie Sie Aliase

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 
Verwandte Themen