2016-10-09 7 views
1

Webベースのチャットシステム(mysql、php、jquery)を作成しています。それぞれの会話に最後に送信されたメッセージのみが表示されます。 (fbのように)。サブクエリmySQLをJoinと置き換えます。

テーブルには次のフィールドがあります。conversation_codeはユニークなトークンで、会話中のすべてのメッセージで共有されます。

id_message, id_sender, id_receiver, conversation_code, message_date, 

私は現在、このSQLクエリで働いています:

​​

このクエリで、期待されるが、(AJAX)をロードするに遅れすぎて結果を返します。この遅延はサブクエリを使用しているためだと言われました。遅延を避けるために、JOINなどのサブクエリを置き換える他の方法はありますか?

答えて

1

これは、内側に基づいていますが

SELECT a.* FROM table_messages as a 
INNER JOIN 
    (SELECT max(message_date) as md 
      FROM table_messages 
      WHERE id_sender='$id_session' OR id_receiver='$id_session' 
      GROUP BY conversation_code) t on t.md = a.message_date 
ORDER BY a.message_date DESC 
+0

に(動の)に参加の代わりに、笑、私の友人、あなたは天才です、おかげであなたを、それが働きました!速度はページに戻されます。 – Max

+0

@Max私の答えが正しいかどうかを確認してくださいma答えは受け入れられました。このリンクはどうすればいいですかhttp://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – scaisEdge

+0

はい、ありがとう。完了しました。私はちょうど質問を投稿した後最初の15分の下にあなたの答えを受け入れることができませんでした。もう一度ありがとう。 – Max

関連する問題