メッセージングスレッド(つまり、送信者/受信者)に対してMySQLクエリを作成しようとしています。
フィールドのあるテーブルがあります(msg_id = 123456のような一意の6桁のID)。この(msg_id)フィールドには、(msg応答ごとに)多くの行が含まれる場合があり、各行はスレッドのように同じ(msg_id)になります。したがって、bobがfredにメッセージを送信し始めたとしましょう。したがって、テーブルのスレッドは次のようになります(要点を説明するための大まかな例):-
+---------+---------------------------+--------------------------+------------------------+------------+----------+
| msg_id | sender_email | recipient_email | sender_msg | cur_date | cur_time |
+---------+---------------------------+--------------------------+------------------------+------------+----------+
| 3189855 | bob@hotmail.com | fred@yahoo.com | hi fred, how are you? | 2013-03-10 | 17:12:18 |
| 3189855 | fred@yahoo.com | bob@hotmail.com | hi bob, I am great | 2013-03-10 | 17:15:20 |
| 3189855 | bob@hotmail.com | fred@yahoo.com | hi fred, good to hear | 2013-03-10 | 17:20:10
| 6749672 | jenny@barclay.cc | fred@yahoo.com | some other message | 2013-03-10 | 14:52:49 |
+---------+---------------------------+--------------------------+------------------------+------------+----------+
ボブまたはフレッドの電子メール受信ボックスを表示するとき、それぞれの一意の(msg_id)を最新(cur_date、cur_time)で表示して、最新のmsg/msg応答が受信ボックスリストの一番上になるようにします。
それで、Fredがほとんどのメッセージを持っているので、Fredsメールボックスに焦点を合わせましょう。受信トレイの電子メールを出力するときに、クエリで次の結果を表示したいのですが。
+---------+---------------------------+--------------------------+------------------------+------------+----------+
| msg_id | sender_email | recipient_email | sender_msg | cur_date | cur_time |
+---------+---------------------------+--------------------------+------------------------+------------+----------+
| 3189855 | bob@hotmail.com | fred@yahoo.com | hi fred, good to hear | 2013-03-10 | 17:20:10 |
| 6749672 | jenny@barclay.cc | fred@yahoo.com | some other message | 2013-03-10 | 14:52:49 |
+---------+---------------------------+--------------------------+------------------------+------------+----------+
したがって、クエリは各一意(msg_id)を取得し、一意(msg_id)ごとに最後の行を取得します(つまり、送信されたスレッドの最後のmsgであり、送信された最新のmsgになります)。それが理にかなっている場合。したがって、私の質問は、上記の結果を出すためにこのSQLクエリをどのように生成するかということです。私のアイデアは以下のとおりですが、機能しません:-
SELECT * FROM inbox_table WHERE (recipient_email='fred@yahoo.com' AND ORDER BY cur_date DESC, cur_time DESC) GROUP BY msg_id ORDER BY cur_date DESC, cur_time DESC;
どんなアイデアでも大歓迎です、そして私はこれをうまく説明したことを望みます。