Ich habe die folgende Tabelle mit den Nachrichten:Count-Nachrichten pro Tag vor und nach einer bestimmten Zeit und zeigen in einer resultset
+---------+---------+------------+----------+
| msg_id | user_id | _date | _time |
+-------------------+------------+----------+
| 1 | 1 | 2011-01-22 | 06:23:11 |
| 2 | 1 | 2011-01-23 | 16:17:03 |
| 3 | 1 | 2011-01-23 | 17:05:45 |
| 4 | 2 | 2011-01-22 | 23:58:13 |
| 5 | 2 | 2011-01-23 | 23:59:32 |
| 6 | 3 | 2011-01-22 | 13:45:00 |
| 7 | 3 | 2011-01-23 | 13:22:34 |
| 8 | 3 | 2011-01-23 | 18:22:34 |
+---------+---------+------------+----------+
Was ich will, für jeden Tag, um zu sehen, wie viele Nachrichten jeder Benutzer vor ausgesendet hat und NACH 16:00 Uhr. Ich mache das jetzt in zwei Schritten:
SELECT user_id, _date, COUNT(msg_id) AS cnt
FROM messages WHERE _time <= '16:00'
GROUP BY user_id, _date ORDER BY user_id, _date ASC
user_id _date cnt
-----------------------------
1 2011-01-22 1
1 2011-01-23 0
2 2011-01-22 0
2 2011-01-23 0
3 2011-01-22 1
3 2011-01-23 1
SELECT user_id, _date, COUNT(msg_id) AS cnt
FROM messages WHERE _time > '16:00'
GROUP BY user_id, _date ORDER BY user_id, _date ASC
user_id _date cnt
-----------------------------
1 2011-01-22 0
1 2011-01-23 2
2 2011-01-22 1
2 2011-01-23 1
3 2011-01-22 0
3 2011-01-23 1
(. In Wirklichkeit btw, die Zeilen mit Wert „0“ sind nicht in der Ergebnismenge gegeben Ich habe sie nur zur Klarstellung)
Ich möchte um diese beiden Ausgänge zu einem zu kombinieren:
user_id _date before16 after16
-------------------------------------
1 2011-01-22 1 0
1 2011-01-23 0 2
2 2011-01-22 0 1
2 2011-01-23 0 1
3 2011-01-22 1 0
3 2011-01-23 1 1
Allerdings habe ich keine Ahnung, wie diese Abfrage geschrieben werden soll. Wenn Sie das tun, würde Ihre Hilfe geschätzt dies :-)
Dank Mann, das ist mein Tag. (bereits die GROUP BY selbst hinzugefügt :-) – Pr0no