3
# select * from users ;
 user_id | login  |          email          | password | firstname | lastname 
---------+--------+-------------------------+----------+-----------+----------
       1 | katie  | katie.s@ymail.com       | secret   | Katie     | Secret
(1 row)

# select * from forum;
 forum_id | forum_name | group_id | forum_parent 
----------+------------+----------+--------------
         1|  1st forum |        1 |            -1
(1 row)

# select * from groups;
 group_id |      group_name       |                group_description                | group_founder 
----------+-----------------------+-------------------------------------------------+---------------
        1 | Java programming      | System.out.println("Hello world in Java!"); :)  |             1
(1 row)

データベースにこれらの 3 つのテーブルがあります。でユーザーが作成したフォーラムを取得したいと思いますid = 1。これを行う方法?(表groupsではid、そのようなグループを作成したユーザーを と呼びgroup_founderます)。

つまり、上記の出力では、ユーザーがid = 1グループ「Java プログラミング」を作成し、このグループ内に「1st フォーラム」と呼ばれるフォーラムを作成したことがわかります。助けてください :)

4

2 に答える 2

3

これを試して

SELECT *
FROM forum f
JOIN groups g ON g.group_id = f.group_id
JOIN users u ON u.user_id = g.group_founder 
WHERE u.user_id = 1
于 2013-01-20T10:27:06.403 に答える
3

入力によると、クエリはそのようになる可能性があります

SELECT U.login,U.email,U.firstname
FROM users U JOIN groups G ON U.user_id = G.group_founder
             JOIN forum F ON G.group_id = F.group_id
WHERE U.user_id = 1

デモ

于 2013-01-20T10:29:49.063 に答える