2013-07-21 9 views
15

कम से कम शीर्षक के बारे में खेद है, लेकिन मुझे नहीं पता कि इसे संक्षेप में कैसे वर्णन किया जाए। कई तालिकाएसक्यूएल कई से अधिक

GroupID | ElementID 
----------------- 
    3 | 1 
    1 | 2 
    2 | 2 
    2 | 3 
    3 | 3 

और तत्वों

ID | Element 
----------------- 
1 | Pride and Prejudice 
2 | Alice in Wonderland 
3 | Curious Incident Of A Dog In The Night Time 

सभी ठीक है और बहुत सरल है की मेज पर

समूहों

ID | Genre 
----------------- 
1 | Action 
2 | Adventure 
3 | Drama 

कई की तालिका: मैं तीन टेबल है। चयन मैं प्राप्त करने के लिए कोशिश कर रहा हूँ निम्नलिखित

ID | Element           | Genre 
------------------------------------------------------------- 
1 | Pride and Prejudice        | Drama 
2 | Alice in Wonderland        | NULL 
3 | Curious Incident Of A Dog In The Night Time  | Drama 

मैं सभी तालिका तत्वों से तत्वों का चयन करें और नाटक या अशक्त लिए शैली क्षेत्र में स्थापित करना चाहते है।

मैं इसे MySQL में करने की कोशिश कर रहा हूं।

अग्रिम धन्यवाद

उत्तर

15

यह इस छोटे चाल (बाहरी के साथ संभव है कई-से-अनेक मेज पर शामिल हों, बाधा है कि ग्रुप 3 (ड्रामा के लिए हो गया है)

http://sqlfiddle.com/#!2/b7c18/2

साथ
SELECT elements.ID, elements.Element, groups.Genre 
    FROM elements 
LEFT OUTER JOIN group_elements 
    ON elements.ID = group_elements.ElementID 
AND group_elements.GroupID = 3 
LEFT OUTER JOIN groups 
    ON group_elements.GroupID = groups.ID 

LEFT OUTER JOIN का अर्थ है: टेबल कि पहले से सभी लाइनों (जो कि LEFT OUTER JOIN के बाएं हाथ की ओर कर रहे हैं, यदि आप होगा) लेते हैं, यहां तक ​​कि अगर foll में उन्हें करने के लिए इसी कोई लाइनों टेबल के कारण स्थिति ON elements.ID = group_elements.ElementID AND group_elements.GroupID = 3 कहती है कि अगर हमें हमारे एलिमेंट आईडी से मेल खाने वाली कोई भी चीज़ मिलती है, तो यह भी एक नाटक (समूह आईडी = 3) होना चाहिए। फिर हम समूह तालिका पर एक और बाएं बाहरी जॉइन करते हैं, जो तत्व को नाटक नहीं होने पर हमें जेनर कॉलम या एनयूएलएल प्रदर्शित करने में सक्षम बनाता है।

+0

मुझे एक पूर्ण कॉलम लौटने की आवश्यकता नहीं दिखाई देती है। WHERE समूह का उपयोग क्यों न करें। आईडी! = '3' या कुछ। bisides कि, जब आप चल रहे हैं MySQL 5.6 में बेवकूफ़ हैं यह अलग-अलग क्रम में वापस आ जाएगा! नल कॉलम की तुलना में पहले गैर न्यूल कॉलम। http://sqlfiddle.com/#!9/01cf3/1/0 आप ऑर्डर द्वारा ऑर्डर कर सकते हैं। –

+1

मेरे उत्तर ने प्रश्न की जरूरतों का उत्तर दिया, जिसे पुस्तक की शैली (उन पुस्तकों को मानते हुए) के रूप में जाना जाने के लिए नल मूल्यों को प्रदर्शित करने के लिए कहा जाता है। बाहरी जोड़ों के साथ क्वेरी उपयोगी होती है जब आप क्वेरी में किसी तालिका से डेटा को _all_ देखना चाहते हैं, इससे कोई फर्क नहीं पड़ता कि कोई अन्य संबंधित डेटा है या नहीं। उदाहरण के लिए, उपरोक्त क्वेरी किसी ऐसे एप्लिकेशन में उपयोगी हो सकती है जो पुस्तक संग्रह प्रबंधित करती है: यह आपको सभी पुस्तकों को देखने और उन लोगों की पहचान करने देती है जिन्हें आपने अभी तक एक शैली के साथ टैग नहीं किया है। ** ** टैग की गई पुस्तकों के लिए शैलियों को देखकर आप किसी अन्य पुस्तक की शैली पर निर्णय लेने में मदद कर सकते हैं। –

संबंधित मुद्दे