4
で一定の時間とショーの後、私はメッセージで、次の表を持っている:私が欲しいものカウント前日あたりのメッセージと1つの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 |
+---------+---------+------------+----------+
は、各ユーザーが前に送信されたメッセージの数を確認するために、それぞれの日のためにあります16:00以降。私は今、二段階で次の操作を行います。
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
(実際には、ところで、「0」の値を持つ行が結果セットに与えられていない、私はちょうど明確化のためにそれらを追加しました。)
を私は希望します
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
しかし、私はこのクエリを書く方法について考えていません。そうした場合、あなたの助けが
感謝の男を、これが私の一日行わ。 (すでにGROUP BYを自分自身に追加しました:-) – Pr0no