Ich versuche, die Anzahl der Schüler pro Klasse, die anwesend sind, zu erhalten.GROUP BY in Union MYSQL
Die Bedingungen sind:
Alle Schüler aus den Klassenzimmern, wo ClassroomID ist < 99 und haben (DropTime <> '00: 00' und PickupTime = '00: 00') und das Datum ist 20161111
Alle Schüler aus den Klassenzimmern, wo ClassroomId> 99 und hat (DropTime = '00: 00') und Datum 20161111
Ith ist mit ist e folgende Abfrage in MySQL und es funktioniert gut und ich bekomme das richtige Ergebnis:
SELECT
COUNT(a.Id) AS total, c.Name
FROM
Attendance a
INNER JOIN
Classroom c ON a.classroom = c.Id
WHERE
DropDate = '20161111'
AND DropTime <> '00:00'
AND PickupTime = '00:00'
GROUP BY Name
der Ausnahme, dass, wenn ich versuche, eine Gewerkschaft zu tun, um die Ergebnisse für eine andere Klasse zu erhalten (dh ClassroomID> 99) es bringt nicht jeder Klassenzimmer und bringt nur 1 Klassenzimmer mit Gesamtanzahl. Dies ist die Union-Abfrage, die ich verwende;
SELECT
SUM(total), Name
FROM
(SELECT
COUNT(a.Id) AS total, c.Name
FROM
Attendance a
INNER JOIN Classroom c ON a.classroom = c.Id
WHERE
DropDate = '20161111'
AND DropTime <> '00:00'
AND PickupTime = '00:00'
AND c.Id < 99
UNION ALL
SELECT
COUNT(a.Id) AS total, c.Name
FROM
Attendance a
INNER JOIN Classroom c ON a.classroom = c.Id
WHERE
DropDate = '20161111'
AND PickupTime = '00:00'
AND c.Id > 99) t
GROUP BY Name
Perfekt danke! – snowflakes74