Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

मेरी क्वेरी कई परिणामों पर क्यों लौट रही है?

आपके पास candidates . के बीच शामिल होने की शर्त नहीं है और jobs , तो आपको दोनों टेबलों के बीच कार्टेशियन उत्पाद मिलता है। साथ ही, skill_names . पर शामिल होने की शर्त के साथ एक समस्या है , जहां दोनों कॉलम समान हैं (यह फिर से एक कार्टेशियन उत्पाद उत्पन्न करता है)।

SELECT can.* , co.*, j.*, sn.*
FROM candidates AS can
JOIN jobs AS j ON j.candidate_id = can.candidate_id --> here: missing join condition
JOIN companies AS co ON j.company_id = co.company_id
JOIN skills AS s ON s.job_id = j.job_id
JOIN skill_names AS sn ON sn.skill_id = s.skill_id  --> and here: wrong join condition

कई RDBMS JOIN . पर सिंटैक्स त्रुटि उत्पन्न करते हैं बिना ON खंड (यदि आप कार्टेशियन उत्पाद चाहते हैं, तो आपको CROSS JOIN का उपयोग करके इसके बारे में स्पष्ट होना चाहिए ), लेकिन, अफसोस, MySQL नहीं।

जब इस प्रश्न की बात आती है:

नहीं, जब तक आप inner join का उपयोग कर रहे हैं s (नहीं left join s), जॉइन ऑर्डर क्वेरी प्लानर के लिए कोई मायने नहीं रखता है, जो उन्हें उस क्रम में पुनर्व्यवस्थित करेगा जो उसे लगता है कि यह अधिक कुशल है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL कमांड-लाइन क्लाइंट में स्वतः पूर्णता

  2. MySQL:संग्रहीत प्रक्रियाओं में IF / THEN कथन

  3. एसक्यूएल सेलेक्ट स्टेटमेंट्स और पीडीओ में से अधिक या बराबर (> =) और उससे कम या बराबर (<=) का उपयोग

  4. MySQL:विभिन्न सर्वरों पर स्थित कई डेटाबेस में क्वेरी में शामिल हों

  5. MYSQL में दो बिंदुओं के बीच की दूरी ज्ञात कीजिए। (प्वाइंट डेटाटाइप का उपयोग करके)