2009-11-26 13 views
15

मेरे पास 3 टेबल हैं: लोग, समूह और सदस्यता। सदस्यता लोगों और समूहों के बीच एक जॉइन टेबल है, और इसमें 3 कॉलम हैं: personId, groupId और विवरण (टेक्स्ट)।किसी अन्य तालिका से कॉलम द्वारा एसक्यूएल ऑर्डर

मैं एक ग्रुप के आधार पर लेकिन पाया की सदस्यता से जुड़े लोगों के नाम से परिणाम छँटाई सदस्यता मेज से प्रविष्टियों का चयन करना चाहते

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

क्या यह संभव है (नाम लोगों तालिका का एक स्तंभ है) इसे एक ही प्रश्न में प्राप्त करने के लिए?

+0

धन्यवाद! – Florent2

उत्तर

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 जोड़ना होगा। –

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

ऐसा प्रतीत होता है कि वह केवल सदस्यता तालिका से जानकारी चाहता है, तो हो सकता है कि "चुनें एम। * ... ऊपर जैसा ..."? फिर यह SQL डेटा सर्वर पर निर्भर करता है कि क्या आप एक गैर-चयनित कॉलम द्वारा ऑर्डर कर सकते हैं; यदि नहीं, तो लौटाए गए डेटा में p.name शामिल होना होगा। –

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 
संबंधित मुद्दे