2013-01-20 54 views
3
# select * from users ; 
user_id | login |   email   | password | firstname | lastname 
---------+--------+-------------------------+----------+-----------+---------- 
     1 | katie | [email protected]  | 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)。如何從3個表中選擇特定數據? [PostgreSQL 9.1]

我的意思是,在上面的輸出中,您可以看到用戶id = 1創建了一個「Java編程」組,然後在該組內創建了一個名爲「1st forum」的論壇。請幫助:)

回答

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 
+0

@Katie酷.... – DON

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 

DEMO

+0

TY所以很多的幫助!:* – Katie

+0

@凱蒂 - 高興地幫助:) – MuhammadHani

+0

哇!感謝這個演示鏈接,非常好,樂於助人 – Katie