0

Oracleをrdbmsとして使用してフォーラムを構築していますが、すべてのフォーラム投稿をフェッチして一部のデータを表示する1つのクエリで問題が発生しています。私が抱えている問題は、最後のディスカッションポスターを入手することです。私のクエリでは、最後の投稿者のIDしか取得できませんでしたが、usersテーブルから彼のユーザー名を取得したいと思います。これは私が持っているものです:

私は次のスキーマを持っています:

discussions
    id 
    course_id
    user_id
    title
    stub
    created_at

threads
    id
    discussion_id
    user_id
    created_at
    updated_at
    message

 discussion_views
     discussion_id
     user_id
     time

  users
     id
     username`

そして、私はこのクエリを行います:

select * from
(select discussions.created_at, 
        discussions.title, 
        users.username as discussion_created_by, 
        count(distinct threads.id) over (partition by discussions.created_at, 
                                                      discussions.title, 
                                                      users.username) AS replies, 
        count(distinct discussion_views.discussion_id) 
             over (partition by discussions.created_at, 
                                discussions.title, 
                                users.username) AS "views",
        threads.user_id AS latest_post_by,
        threads.updated_at AS latest_post_at,
        row_number() over (partition by discussions.created_at, 
                                        discussions.title, 
                                        users.username
                           order by threads.id desc) AS rn
 from discussions
 left join threads on discussions.id=threads.discussion_id
 left join discussion_views on discussions.id=discussion_views.discussion_id
 join users on users.id=discussions.user_id) sq
where rn=1
order by created_at desc

私はidとしてlatest_post_byを取得しています、私はユーザー名を表示したいです

4

1 に答える 1

2

あなたのコメントに応えて、usersテーブルに別の結合を追加してください。

join users latest_poster ON (latest_poster.id=threads.user_id)

次に置き換えます:

threads.user_id AS latest_post_by

と:

latest_poster.username AS latest_post_by

これにより、 で識別されるユーザーのユーザー名が得られますthreads.user_id

それが役に立てば幸い...

于 2012-03-13T09:34:15.547 に答える