1

基本的なフォーラムを作成しています。作成されたスレッドのリストを取得するだけでなくmost recent post、投稿テーブルからも取得して、表示できるようにします。last reply and time of last reply

私の試みが重複した結果を引き起こしているにもかかわらず、私は同じ結果でaLEFT JOINとaを試しました。INNER JOIN私は誰かが解決策を知っていることを望んでいました。

これは私の試みです:

SELECT  t1.username as thread_starter,
        t2.username as last_reply_username,
        t1.thread_time as thread_start,
        t2.post_time as last_reply_time,
        t1.title,
        t1.sticky 
FROM threads t1
     INNER JOIN posts t2
        ON t1.id = t2.threadid
ORDER BY t1.sticky DESC, t2.post_time DESC

重複したスレッドを返さずに、各スレッドに関連する投稿テーブルから最後の最新の投稿のみを取得するように、問題を解決する方法を知っている人はいますか?

4

1 に答える 1

2

以下のクエリの背後にある考え方は、サブクエリ内のそれぞれのテーブルから最新の投稿(post_time)を見つけることです。次に、元のテーブルとテーブルに結合します。postthreadidpostthreads

SELECT  a.username AS Thread_Starter,
        c.username AS Last_reply_username,
        a.thread_time AS Thread_Start,
        c.post_time AS Last_Reply_Time,
        a.Title,
        a.Sticky
FROM    threads a
        INNER JOIN
        (
            SELECT  threadID, MAX(Post_Time) lastPost
            FROM    post
            GROUP BY ThreadID
        ) b ON  a.threadID = b.threadID
        INNER JOIN post c
            ON  b.threadID = c.ThreadID AND
                b.lastPost = c.post_time
ORDER BY a.sticky DESC, c.post_time DESC
于 2012-10-16T00:46:37.960 に答える