私はメッセージテーブルを持っています -
msg
_____
id int(11)
subject varchar(255)
content text
create_time datetime
parent int(11)
parent
msg
テーブル自体への外部キーです。parent
つまり、会話内のすべての返信が 1 つの親 (会話の最初のメッセージ) を持つようにparent
設定された行のみを参照できます。NULL
Gmail のグループ化された会話の順序のように、返信も考慮して、親メッセージを降順で選択できるようにしたいと考えています。また、各親への最新の返信 (存在する場合) を結合したいと考えています。create_time
create_time
適切な SQL を思い付くことができません。これは私がこれまでやってきたことです -
SELECT * FROM `msg` `parent`
LEFT JOIN `msg` `reply`
ON `reply`.`parent` = `parent`.`id`
WHERE `parent`.`parent` IS NULL
GROUP BY `parent`.`id`
ORDER BY `reply`.`create_time` DESC
これに関する2つの差し迫った問題は -
ORDER BY
親の作成時間は句に取り込まれません。- これは、親への最新の返信を私に与えているわけではありません。
正しい方向に突っ込んでいただければ幸いです。ありがとう。