2010-07-23 174 views
1

我有三個表,說:,PostgreSQL的查詢涉及三個表

(1)名稱:組

列:GID,組名

(2)名稱:配置文件

列: profileid,profname

(3)名稱:團隊簡介

列:gid,profileid - 對應於前面表中的列

現在,假設我有一個profileid的數組,我想構造一個查詢,它在GroupsProfiles中查找相應的gid,然後在Groups中查找相應的組名。

我一直在玩連接和東西,但沒有完全得到我想要的。有任何想法嗎?

+0

你可以顯示你已有的東西嗎? – pascal 2010-07-23 13:20:55

回答

1

使用JOIN(與你關心的配置文件ID替換your_profile_id):

SELECT p.profileid 
    , g.gid 
    , g.GroupName 
    FROM Groups g 
    , Profiles p 
    , GroupsProfiles gp 
WHERE g.gid = gp.gid 
    AND p.profileid = gp.profileid 
    AND p.profileid = your_profile_id 

你會運行此查詢的每個配置文件ID。如果您想要獲取所有配置文件或配置文件子集的信息,則可以刪除your_profile_id上​​的條件,或者如果您知道需要哪些條目,也可以使用IN子句。

SELECT g.gid 
    , g.GroupName 
    FROM Groups g 
    , Profiles p 
    , GroupsProfiles gp 
WHERE g.gid = gp.gid 
    AND p.profileid = gp.profileid 
    AND p.profileid IN (profile_id_1, profile_id_2, ... ,profile_id_N) 
+0

非常感謝。 – tomh 2010-07-23 13:31:08