मैं इस स्क्रिप्ट को SQL सर्वर में लिखता हूं और मैं इस ज्वाइन्ड टेबल से अधिकतम ऑर्डर काउंट के साथ भोजन का नाम प्राप्त करना चाहता हूं। मैं अधिकतम मान सही प्राप्त कर सकता हूं लेकिन जब मैं FoodName जोड़ता हूं तो चयन होता है यह मुझे एक त्रुटि देता है।

SELECT  S.FoodName, MAX(S.OrderCount) FROM 
(SELECT FoodName,
    SUM(Number) AS OrderCount   
FROM tblFactor
INNER JOIN tblDetail
    ON tblFactor.Factor_ID = tblDetail.Factor_ID 
WHERE FactorDate = '2020-10-30'
GROUP BY FoodName)S

यहाँ त्रुटि संदेश है

कॉलम 'S.FoodName' चयन सूची में अमान्य है क्योंकि यह या तो एक समग्र कार्य या ग्रुप बाय क्लॉज में शामिल नहीं है।

मुझे यह भी पता है कि मैं भोजन का नाम और अधिकतम आदेश संख्या प्राप्त करने के लिए ऑर्डर बाय और टॉप का उपयोग कर सकता हूं लेकिन मैं इस स्क्रिप्ट में जिस तरह से उपयोग करता हूं उसका उपयोग करना चाहता हूं। आपके जवाबों के लिए धन्यवाद

0
Arezoo Farahi 30 अक्टूबर 2020, 17:42

2 जवाब

सबसे बढ़िया उत्तर

यदि मैं आपका सही ढंग से अनुसरण करता हूं, तो आप join क्वेरी के परिणाम पर सीधे ORDER BY और TOP (1) का उपयोग कर सकते हैं:

SELECT TOP (1) f.FoodName, SUM(d.Number) AS OrderCount   
FROM tblFactor f
INNER JOIN tblDetail d ON f.Factor_ID = d.Factor_ID 
WHERE f.FactorDate = '2020-10-30'
GROUP BY f.FoodName
ORDER BY OrderCount DESC

टिप्पणियाँ:

  • मैंने क्वेरी में टेबल उपनाम जोड़े, और प्रत्येक कॉलम को तालिका के साथ उपसर्ग किया (संभवतः!) से आता है; आपको इसकी समीक्षा करने की आवश्यकता हो सकती है, क्योंकि मुझे अनुमान लगाना था

  • यदि आप शीर्ष संबंधों को अनुमति देना चाहते हैं, तो इसके बजाय TOP (1) WITH TIES का उपयोग करें

0
GMB 30 अक्टूबर 2020, 17:45

आपके पास बाहरी क्वेरी MAX() में एक एग्रीगेशन फ़ंक्शन है और एक अनएग्रीगेटेड कॉलम है। इसलिए, डेटाबेस एक GROUP BY की अपेक्षा करता है।

इसके बजाय, ORDER BY और LIMIT का उपयोग करें:

SELECT FoodName, SUM(Number) AS OrderCount   
FROM tblFactor f INNER JOIN
     tblDetail d
     ON fd.Factor_ID = d.Factor_ID 
WHERE FactorDate = '2020-10-30'
GROUP BY FoodName
ORDER BY OrderCount DESC
LIMIT 1;

नोट: एक क्वेरी में जो एकाधिक तालिकाओं का संदर्भ देती है, आपको सभी स्तंभ संदर्भों को योग्य बनाना चाहिए। यह स्पष्ट नहीं है कि कॉलम कहाँ से आते हैं, इसलिए मैं इस प्रश्न के लिए ऐसा नहीं कर सकता।

0
Gordon Linoff 30 अक्टूबर 2020, 17:45