2009-11-26 12 views
15

3 tablolarım var: insanlar, gruplar ve üyelikler. Üyelikler, kişiler ve gruplar arasındaki birleşim tablosu ve 3 sütuna sahiptir: personId, groupId ve description (text).Başka bir masanın bir sütununa göre SQL order

Ben

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

mümkün mü (isim insanlar tablosunun bir sütundur) bir GroupID bağlı ama bulundu üyelikleri ilişkili kişilerin adlarıyla tasnif sonucuna üyelikleri tablodan girişlerini seçmek istiyor Bunu tek bir sorguda başarmak için?

+0

teşekkürler! – Florent2

cevap

23

Kişiler tablosuna katılın ve istediğiniz alana göre sipariş verin. senin cevaplar için

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

Bazı SQL veri sunucuları, yalnızca seçili verilere göre sipariş vermenizde ısrar eder; bu durumda, seçilen verilere p.name eklemeniz gerekir. –

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

Görünüşe göre, sadece üyelik tablosundan bilgi almak istiyor, belki de "SELECT m. * ... yukarıdaki gibi ..."? Ardından, seçili olmayan bir sütuna göre sipariş verebileceğiniz SQL veri sunucusuna bağlıdır; Aksi takdirde, iade edilen veriler p.name içermelidir. –

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 
İlgili konular