1

次のような mysql データベースに 2 つのテーブルがあります。

USERS : id, username
POSTS : id, post, poster_id, posted_id

今、私はposter_idのユーザー名(投稿を書いた人)とposted_idのユーザー名(投稿が書かれた壁の所有者)で最後の10件の投稿を取得したい

私はこのクエリを使用します:

SELECT posts.*,users.username as poster_username FROM posts
INNER JOIN users on posts.poster_id = users.id 
ORDER BY timestamp DESC 
LIMIT 0,10

しかし、ご覧のとおり、poster_id のユーザー名を 1 つ取得するだけです。同じ内部結合ステートメント内で posted_id のユーザー名を取得する方法はありますか??

4

1 に答える 1

5

ユーザーに 2 回参加する必要があります。

SELECT posts.*,
       u1.username as poster_username,
       u2.username as posted_username
FROM posts
INNER JOIN users u1 on posts.poster_id = u1.id 
INNER JOIN users u2 on posts.posted_id = u2.id 
ORDER BY timestamp DESC 
LIMIT 0,10

唯一の要件は、各テーブルにエイリアスを割り当てることです

于 2013-10-30T08:29:42.610 に答える