2009-11-26 50 views
15

我有3個表:人員,組和成員資格。會員資格是人與團體之間的連接表,有3列:personId,groupId和description(文本)。來自另一個表的列的SQL順序

我想選擇取決於的groupId而是由相關的發現成員的人的名字排序結果中的成員表項(名字是百姓餐桌的列)

SELECT * FROM "memberships" WHERE ("memberships".groupId = 32) ORDER BY (?????) 

是否有可能在一個單一的查詢中實現這一點?

+0

謝謝你的答案! – Florent2 2009-11-28 16:49:42

回答

23

加入到人員表格,然後按照您要的字段排序。

SELECT 
    m.* 
FROM 
    "memberships" AS m 
    JOIN "people" AS p on p.personid = m.personID 
WHERE 
    m.groupId = 32 
ORDER BY 
    p.name 
+6

某些SQL數據服務器堅持只按選定的數據進行排序 - 在這種情況下,您必須將p.name添加到選定的數據。 – 2009-11-26 21:09:20

3
SELECT * 
FROM Membership AS m 
    JOIN People as p ON p.personID = m.personID 
WHERE m.groupID = 32 
ORDER BY p.name 
+0

看來他只想從會員表中獲得信息,所以也許「SELECT m。* ... as above ...」?然後它依賴於SQL數據服務器是否可以通過未選擇的列進行排序;如果不是,那麼返回的數據將不得不包含p.name。 – 2009-11-26 21:07:40

1
SELECT 
     M.* , 
     P.Name AS PersonName 
FROM 
     Memberships AS m 
INNER JOIN 
     People AS P ON P.PersonID = M.PersonID 
WHERE 
     M.GroupID = 32 
ORDER BY 
     PersonName 
相關問題