2012-03-19 26 views
58

मैं इस पार डेटाबेस क्वेरी है ...अंतर शामिल हों बनाम वाम शामिल हों

SELECT 
      `DM_Server`.`Jobs`.*, 
      `DM_Server`.servers.Description AS server, 
      digital_inventory.params, 
      products.products_id, 
      products.products_pdfupload, 
      customers.customers_firstname, 
      customers.customers_lastname 
     FROM `DM_Server`.`Jobs` 
     INNER JOIN `DM_Server`.servers ON servers.ServerID = Jobs.Jobs_ServerID 
     JOIN `cpod_live`.`digital_inventory` ON digital_inventory.jobname = Jobs.Jobs_Name 
     JOIN `cpod_live`.`products` ON products.products_pdfupload = CONCAT(digital_inventory.jobname, ".pdf") 
     JOIN `cpod_live`.`customers` ON customers.customers_id = products.cID 
     ORDER BY `DM_Server`.`Jobs`.Jobs_StartTime DESC LIMIT 50 

जब तक मैं उन्हें LEFT JOIN रों बनाने यह ठीक चलाता है। मैंने सोचा कि एक प्रकार का जुड़ाव निर्दिष्ट नहीं करके इसे LEFT JOIN माना जाता था। क्या यह मामला नही है?

+0

कृपया आपको जो त्रुटि मिलती है, उसे दिखाएं। –

उत्तर

159

मैंने सोचा कि एक प्रकार का जुड़ाव निर्दिष्ट नहीं करके इसे एक बाएं जॉइन माना जाता था। क्या यह मामला नही है?

नहीं, डिफ़ॉल्ट जुड़ाव एक इंटर्न जॉइन है।

यहां a visual explanation of SQL joins है।

इनर में शामिल होने के एक प्रकार निर्दिष्ट नहीं है जब

enter image description here

वाम में शामिल होने

enter image description here

+0

क्रॉस-डेटाबेस द्वारा टीएस का अर्थ है कि उसकी क्वेरी एकाधिक डेटाबेस से तालिकाओं का उपयोग करती है। –

+0

@Lex: धन्यवाद, मैंने संपादित किया है। –

+2

क्या कोई बड़ा कारण है कि 'बाएं जॉइन' 'इनर जॉइन' की तुलना में इतनी धीमी क्यों होगी? – Webnet

13

नंबर, एक INNER JOIN प्रयोग किया जाता है। मतभेदों को पढ़ने के लिए; wikipedia

9

मेरा मानना ​​है कि डिफ़ॉल्ट INNER JOIN है यदि आप केवल JOIN निर्दिष्ट करते हैं।

7

यदि आपने अभी डिफ़ॉल्ट रूप से क्वेरी में जॉइन का उल्लेख किया है तो इसे पर एक इंटर्न जॉइन के रूप में माना जाएगा।

बाएं शामिल हों: बाएं जुड़ें बाएं तालिका से सभी तत्वों को ले लेंगे और केवल सही तालिका से मिलान करने वाले रिकॉर्ड Follows के रूप में लेंगे। उदाहरण:

SELECT column_name(s) 
FROM table_name1 #(Left table) 
LEFT JOIN table_name2 #(Right table) 
ON table_name1.column_name=table_name2.column_name 

उम्मीद है कि इससे मदद मिलती है।

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