メッセージングシステム用に次の3つのテーブルがあります。
`messaging_messagethread`
- id
- subject
- initiator_id # who creates the thread
- recipient_id
`messaging_message`
- id
- thread_id
- content
- timestamp
- sender_id
`messaging_messagestatus` # a status will be created for each recipient of a message
- id
- message_id
- recipient_id
- status
ユーザーを指定して、次を取得するためのクエリを作成する必要があります。
- スレッドIDを表示(個別)、
content
そしてtimestamp
そのスレッドの最新のメッセージの- 最新のメッセージを含むスレッドをすべて削除します
status='deleted'
。
これが私がこれまでに持っているものです:
SELECT DISTINCT thread.id as thread_id, timestamp.timestamp
FROM messaging_messagethread thread
INNER JOIN
(SELECT thread_id, MAX(timestamp) as timestamp
FROM messaging_message GROUP BY thread_id) timestamp
ON thread.id = timestamp.thread_id
WHERE initiator_id = 4 OR thread.recipient_id = 4 ORDER BY timestamp.timestamp DESC
これにより、最新のタイムスタンプ順に並べられた個別のスレッドIDが得られます。(私の最初の3つのポイント)。クエリ全体をどのように作成しますか?