मेरा बायां शून्य दिखाने में काम नहीं कर रहा है?

मैं तारीख के भीतर शून्य के साथ लेखकों को प्राप्त करने की कोशिश कर रहा हूं, लेकिन मुझे केवल बेचे जाने वाले लोग मिलते हैं।

SELECT v.author_name, COUNT(*)
FROM bookssold s
LEFT JOIN authors v ON s.author_id = v.author_id
WHERE s.price = 19
AND DATE(s.purchase_date) BETWEEN '2009-01-20' AND DATE(NOW())
GROUP BY s.author_id

यह अन्य पदों के अनुसार काम करना चाहिए।

v आईडी और नाम के साथ लेखकों की मेज है

एस लेखक आईडी, मूल्य, और खरीद की तारीख के साथ बेची किताबें है

0
कृपया अपनी स्कीमा भी पोस्ट करें।
जोड़ा लेखक BenM, स्रोत
lol कोई भी मेरे टेबल नाम हैं। पढ़ने योग्य होने के लिए कुछ छोड़ना पड़ा। टेबल वीडी में सभी लेखकों हैं। मैं उन लेखकों को चाहता हूं जिन्होंने शून्य के साथ कोई किताब नहीं बेची है
जोड़ा लेखक Dev-Ria, स्रोत
ठीक है, इसलिए मुझे लेखक_नाम और 1 9 के लिए कितनी किताबें बेची गईं, इस बारे में गिना जाता है। अगर लेखक ने $ 19 के लिए कोई किताब नहीं बेच दी है या कोई किताब नहीं है तो मैं शून्य दिखाना चाहता हूं।
जोड़ा लेखक Dev-Ria, स्रोत
यह अब स्पष्ट होना चाहिए कि मैं क्या करने की कोशिश कर रहा हूं।
जोड़ा लेखक Dev-Ria, स्रोत
मैं तारीख के भीतर शून्य के साथ लेखकों को प्राप्त करने की कोशिश कर रहा हूं इसका क्या अर्थ है?
जोड़ा लेखक juergen d, स्रोत
ss से s से अच्छा अलियासिंग। वह समय बचाएगा :)
जोड़ा लेखक Mosty Mostacho, स्रोत
@ देव-रिया, शून्य से ज़्यादा किताबें बेचने का क्या मतलब है? आप किस क्षेत्र का जिक्र कर रहे हैं? आपके प्रश्न के मुताबिक आपके पास पुस्तकें बेची गई तालिका में केवल तीन फ़ील्ड हैं। मैं आईडी में 0s की तलाश में, मूल्य , या खरीद की तारीख के लिए तर्क समझ में नहीं आता।
जोड़ा लेखक Linger, स्रोत

1 उत्तर

आपका प्रश्न थोड़ा अस्पष्ट है, लेकिन यहां जाता है।

यदि ss एक बिक्री का रिकॉर्ड है और vd लेखक का नाम/आईडी है, और आप प्रत्येक लेखक को एक सूची चाहते हैं, भले ही उसके पास बिक्री हो, बिक्री के साथ यदि कोई है, तो आपके टेबल को आपके <कोड> बाएं जॉइन पर स्विच किया गया है। इसके बजाय आप चाहते हैं

...
FROM vd
LEFT JOIN ss ON ss.id = vd.id
...

वैकल्पिक रूप से आप उन्हें अपने क्रम में रख सकते हैं और दाएं जॉइन का उपयोग कर सकते हैं, लेकिन मुझे लगता है कि LEFT अधिक समझ में आता है।

यदि आप परिणाम NULL के बजाय ज़ीरो दिखाने के लिए चाहते हैं, तो आपको CASE या कुछ का उपयोग करना होगा, लेकिन यह एक अलग प्रश्न है।

मैं निम्नलिखित कोशिश करने का सुझाव दूंगा:

SELECT v.author_name, COUNT(*)
FROM authors v
LEFT JOIN bookssold s 
    ON s.author_id = v.author_id
    AND s.price = 19
    AND DATE(s.purchase_date) BETWEEN '2009-01-20' AND CURDATE()
GROUP BY v.author_id;
0
जोड़ा
@ देव-रिया जब आप जॉइन ऑर्डर को उलट देते हैं, तो क्या आपने WHERE फ़िल्टर को जॉइन में कहां स्थानांतरित किया था? यदि आप LEFT JOIN बुकसॉल्ड का उपयोग कर रहे हैं तो ON स्थिति के बाद आप और s.price = 19 और DATE (s.purchase_date) को 200 9-01 के बीच जोड़ देंगे -20 'और दिनांक (अब ()) और जहां हटाएं।
जोड़ा लेखक Taryn, स्रोत
@iamnotmaynard मैंने आपके उत्तर को एक नमूना क्वेरी के साथ संपादित किया जो मुझे लगता है कि काम करना चाहिए।
जोड़ा लेखक Taryn, स्रोत
@ देव-रिया इस जवाब में संपादन को देखते हैं, जहां WHERE क्लॉज में फ़िल्टर होने से आपकी क्वेरी एक INNER जॉइन के समान व्यवहार कर रही है जिसे आप नहीं चाहते हैं।
जोड़ा लेखक Taryn, स्रोत
यही वह है जो मैं करने की कोशिश कर रहा हूं लेकिन अगर मैं टेबल को स्विच करता हूं तो भी मुझे केवल लेखकों को ही किताबें बेचती हैं। मुझे कोई शून्य नहीं मिलता है। 50 लेखकों और केवल 20 किताबें बेची गई हैं। मुझे केवल 20 वापस मिलते हैं। मैं अभी भी 30 अन्य याद कर रहा हूँ।
जोड़ा लेखक Dev-Ria, स्रोत
हाँ मुझे लगता है कि जहां खंड मुद्दा है। मैंने उपर्युक्त प्रश्न का उपयोग किया लेकिन अब मुझे कुछ ज़ीरो के साथ सभी लेखकों को मिला है, सिवाय इसके कि गणना सही नहीं है। वे मेरी मूल क्वेरी से बहुत कम हैं जो शून्य नहीं देते हैं।
जोड़ा लेखक Dev-Ria, स्रोत
रुकिए! यह वास्तव में कारगर है। जब मैं कहां से मेल खाता बुकसॉल्ड टेबल पर एक अलग क्वेरी पर लेखक चलाता हूं, तो मुझे "iamnotmaynard" से पूछताछ के समान गणना मिलती है।
जोड़ा लेखक Dev-Ria, स्रोत
मुझे लगता है कि @bluefeet सही रास्ते पर है।
जोड़ा लेखक iamnotmaynard, स्रोत
फिर COUNT (s.purchase_date) में चयन को बदलना या आपको कुछ बेचा गया नंबर, या 0 अगर कोई नहीं (मुझे लगता है; अभी मेरे लिए परीक्षण करने का कोई तरीका नहीं है )।
जोड़ा लेखक iamnotmaynard, स्रोत
@ देव-रिया उस प्रश्न का प्रयास करें और हमें बताएं कि यह कैसे काम करता है।
जोड़ा लेखक iamnotmaynard, स्रोत