0

Threads テーブルからスレッドを含む最新の 5 つのトピックを返そうとしています。次に、トピック テーブルに結合して、トピック名 + スレッド テーブル結合から author テーブルに結合し、著者名を返す必要があります。

トピックが最新の x 投稿に何度も表示される場合、最新 (最高) のスレッド ID 情報のみが必要です。

SELECT distinct top 5 Topic_ID, Thread_ID from tblThread ORDER BY Thread_ID DESC

次のように、最新の 5 つのスレッド ID を返すだけです。

topic_id - スレッド ID

852 - 2905

852 - 2904、

850 - 2903、

937 - 2902、

937 - 2901

852 - 2905 + その他のフィールド、トピック名、著者名を返したい

850 - 2903 + ..

937 - 2902 + ...

& 次の 2 つのトピック ID

前もって感謝します :)

4

3 に答える 3

0

これは機能しませんか:

select topic, max(thread) as thread from tblThread
group by topic
order by thread desc

その後、必要な結合を行います。

于 2013-02-15T16:31:27.987 に答える
0

このような方法でうまくいくはずです(ただし、実際のテーブルと列を使用する必要があります):

;WITH CTE AS
(
    SELECT *, ROW_NUMBER() OVER(PARTITION BY Topic_ID ORDER BY Thread_ID DESC) RN
    FROM tblThread 
)
SELECT  A.Topic_ID,
        A.Thread_ID,
        B.Topic_Name,
        C.Author_Name
FROM CTE A
INNER JOIN tblTopic B
    ON A.Topic_ID = B.Topic_ID
INNER JOIN tblAuthor C
    ON A.Author_ID = C.Author_ID
WHERE RN = 1
于 2013-02-15T16:08:34.633 に答える
0

最終的な答え:

;WITH CTE AS
(
    SELECT top 10 *, ROW_NUMBER() OVER(PARTITION BY Topic_ID ORDER BY Thread_ID DESC) RN
    FROM tblThread 
    ORDER BY tblThread.Thread_ID DESC
)
SELECT  tblThread.Topic_ID,
        tblThread.Thread_ID,
        tblTopic.Subject,
        tblAuthor.UserName
FROM CTE tblThread
INNER JOIN tblTopic
    ON tblThread.Topic_ID = tblTopic.Topic_ID
INNER JOIN tblAuthor
    ON tblThread.Author_ID = tblAuthor.Author_ID
WHERE RN = 1
于 2013-02-15T17:13:22.677 に答える