2

未読メッセージとそれに続く最新の会話に従って、チャットテーブルからユーザーを注文する必要があるという要件があります。

次のようなテーブル構造があります。

ID | from_member_id | to_member_id | added_time | メッセージ | is_viewed

ここで from_member_id と to_member_id はメンバー テーブルの主キーです。message は互いに送信されるメッセージであり、is_vied はメッセージが受信者または to_member_id によって表示されるかどうかを示すフラグです。そのため、 member_id があり、それを両方の列と一致させる必要がありますが、最初に未読メッセージ、次に未読メッセージに従って結果をソートする必要があります。

このクエリを使用しています

  SELECT `from_member_id`
       , `to_member_id`
       , MAX(`added_time`) AS latest
       , `is_viewed`
    FROM `wp_doc_profile_message`
   WHERE `from_member_id` = 3
GROUP BY `from_member_id`
ORDER BY `is_viewed` ASC, `latest` DESC 

それは私の欲望の結果を与えていません。助けてください。

4

1 に答える 1

0

ここto_member_id で OR 演算子と group by idメッセージ テーブル ID を照合して、レコードが重複しないようにすることができます

SELECT `from_member_id`,`to_member_id`,max(added_time) as latest,`is_viewed` FROM
 wp_doc_profile_message WHERE  from_member_id = 3  OR to_member_id=3 
 group by `id`
 ORDER BY is_viewed ASC, latest DESC

また

SELECT pm.`from_member_id`,pm.`to_member_id`,max(pm.added_time) as latest,pm.`is_viewed` FROM
 wp_doc_profile_message  pm
LEFT JOIN members m ON (m.id=pm.`from_member_id` OR m.id=pm.`to_member_id` )

 group by pm.`id`
 ORDER BY pm.is_viewed ASC, latest DESC
于 2013-07-29T13:33:45.533 に答える