मेरे पास तीन टेबल: tickets
, ticket_solutions
, और solutions
शामिल MySQL में कई से अधिक तालिका संबंध हैं। (। एक टिकट कई समाधान हो सकता है, और समाधान कई टिकट के लिए लागू)कई से अधिक रिश्तों के लिए बाएं बाहरी जुड़ने का उपयोग करना जहां शून्य की अनुमति है
यहाँ तालिका संरचनाओं, सरलीकृत कर रहे हैं:
tickets ticket_solutions solutions
----- ----- -----
id ticket_id id
solution_id solution
(इस उदाहरण में, सभी क्षेत्रों INT
solutions.solution
जो VARCHAR
है सिवाय कर रहे हैं।) चूंकि कुछ टिकट पूरा नहीं हुए हैं, इसलिए उनके पास कोई समाधान नहीं हो सकता है।
मैं निम्न क्वेरी लिखा है:
SELECT t.id, GROUP_CONCAT(DISTINCT sol.solution SEPARATOR ', ') solutions
FROM tickets t
LEFT JOIN ticket_solutions tsol ON (tsol.ticket_id = t.id)
LEFT JOIN solutions sol ON (tsol.solution_id = sol.id)
GROUP BY t.id DESC;
मेरा प्रश्न दूसरा LEFT JOIN
साथ निहित है। किसी भी स्थिति में जहां दिए गए टिकट के लिए लिंकर तालिका (ticket_solutions
) में कोई प्रविष्टि मौजूद है, हमेशाsolutions
में मिलान करने के लिए एक रिकॉर्ड हो। हालांकि अगर मैं INNER JOIN
का उपयोग करने की कोशिश करता हूं, तो मुझे अब ऐसे टिकट नहीं मिलेंगे जिनमें समाधान की कमी है।
मेरी सोच के लिए, NULL
मान केवल tickets
और लिंकर तालिका के बीच संबंधों में होगा। (किसी भी समाधान के बिना अभी तक टिकट।)
मैं लिंकर तालिका के बीच एक LEFT JOIN
और solutions
का उपयोग करना चाहिए, भले ही उस विशेष रिश्ते में NULL
मान नहीं होगा?
यदि नहीं, तो अनुशंसित क्वेरी संरचना क्या है?
यह मैं वास्तव में क्या ढूंढ रहा था। धन्यवाद। – JYelton