我有3個表:人員,組和成員資格。會員資格是人與團體之間的連接表,有3列:personId,groupId和description(文本)。來自另一個表的列的SQL順序
我想選擇取決於的groupId而是由相關的發現成員的人的名字排序結果中的成員表項(名字是百姓餐桌的列)
SELECT * FROM "memberships" WHERE ("memberships".groupId = 32) ORDER BY (?????)
是否有可能在一個單一的查詢中實現這一點?
我有3個表:人員,組和成員資格。會員資格是人與團體之間的連接表,有3列:personId,groupId和description(文本)。來自另一個表的列的SQL順序
我想選擇取決於的groupId而是由相關的發現成員的人的名字排序結果中的成員表項(名字是百姓餐桌的列)
SELECT * FROM "memberships" WHERE ("memberships".groupId = 32) ORDER BY (?????)
是否有可能在一個單一的查詢中實現這一點?
加入到人員表格,然後按照您要的字段排序。
SELECT
m.*
FROM
"memberships" AS m
JOIN "people" AS p on p.personid = m.personID
WHERE
m.groupId = 32
ORDER BY
p.name
某些SQL數據服務器堅持只按選定的數據進行排序 - 在這種情況下,您必須將p.name添加到選定的數據。 – 2009-11-26 21:09:20
SELECT *
FROM Membership AS m
JOIN People as p ON p.personID = m.personID
WHERE m.groupID = 32
ORDER BY p.name
看來他只想從會員表中獲得信息,所以也許「SELECT m。* ... as above ...」?然後它依賴於SQL數據服務器是否可以通過未選擇的列進行排序;如果不是,那麼返回的數據將不得不包含p.name。 – 2009-11-26 21:07:40
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
謝謝你的答案! – Florent2 2009-11-28 16:49:42