का उपयोग करके फ़िल्टरिंग मेरे पास आइटम की एक तालिका है और मेरे पास प्रत्येक आइटम की व्यक्तिगत खरीद वाली एक अलग तालिका है। हर आइटम खरीदा नहीं गया है। मैं खरीद गिनती का चयन कर रहा हूँ और एक बयान निम्न के समान के साथ आइटम की मेज के साथ इसमें शामिल होने:बाएं जॉइन से नल कॉलम पर डिफ़ॉल्ट मान सेट करना और WHERE
SELECT items.name, purchases_count
FROM `items`
LEFT JOIN (SELECT sales.item_name, SUM(unit_sales) AS purchases_count
FROM sales GROUP BY item_name) sales ON sales.item_name = items.uid
इस के समान डेटा में परिणाम:
+------+-----------------+
| name | purchases_count |
|------+-----------------+
| Shoe | 12 |
| Belt | NULL |
+------+-----------------+
मेरे समस्या पैदा होती है जब मैं फ़िल्टर करना चाहते हैं यह परिणाम purchases_count
पर है। अगर मैं WHERE purchases_count < 10
या कुछ ऐसा ही उपयोग करता हूं, तो कोई बिक्री रिकॉर्ड वाले आइटम (यानी NULL
मान वाले) को खोज से बाहर रखा गया है।
मैंने COALESCE(purchases_count,0) AS purchases_count
का उपयोग करने का प्रयास किया है जो NULL
रिकॉर्ड 0 पर सही ढंग से सेट करता है, लेकिन WHERE
का उपयोग करते समय वे अभी भी दिखाई नहीं दे रहे हैं। मुझे संदेह है कि COALESCE
WHERE
के बाद हो रहा है।
मैं WHERE
का उपयोग करके इस नंबर पर फ़िल्टर करने में सक्षम होना चाहता हूं और यदि संभव हो तो NULL
परिणाम (शून्य के रूप में) शामिल करें। कोई सुझाव?
'छोड़ दिया की alias' में शामिल होने तालिका तालिका नाम के समान है, यह अच्छा अभ्यास है ?? – diEcho
SQL क्वेरी को केवल प्रश्न पर ध्यान केंद्रित करने के लिए सरलीकृत किया गया है, वास्तविक एसक्यूएल इसके लिए अलग है। –