मैं इस स्क्रिप्ट को 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' चयन सूची में अमान्य है क्योंकि यह या तो एक समग्र कार्य या ग्रुप बाय क्लॉज में शामिल नहीं है।
मुझे यह भी पता है कि मैं भोजन का नाम और अधिकतम आदेश संख्या प्राप्त करने के लिए ऑर्डर बाय और टॉप का उपयोग कर सकता हूं लेकिन मैं इस स्क्रिप्ट में जिस तरह से उपयोग करता हूं उसका उपयोग करना चाहता हूं। आपके जवाबों के लिए धन्यवाद
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
का उपयोग करें
आपके पास बाहरी क्वेरी 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;
नोट: एक क्वेरी में जो एकाधिक तालिकाओं का संदर्भ देती है, आपको सभी स्तंभ संदर्भों को योग्य बनाना चाहिए। यह स्पष्ट नहीं है कि कॉलम कहाँ से आते हैं, इसलिए मैं इस प्रश्न के लिए ऐसा नहीं कर सकता।
संबंधित सवाल
नए सवाल
sql
संरचित क्वेरी भाषा (एसक्यूएल) डेटाबेस को क्वेरी करने के लिए एक भाषा है। प्रश्नों में कोड उदाहरण, तालिका संरचना, नमूना डेटा और DBMS कार्यान्वयन के लिए एक टैग (जैसे MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2, आदि) का उपयोग किया जाना चाहिए। यदि आपका प्रश्न केवल एक विशिष्ट DBMS (विशिष्ट एक्सटेंशन / सुविधाओं का उपयोग करता है) से संबंधित है, तो इसके बजाय उस DBMS के टैग का उपयोग करें। एसक्यूएल के साथ टैग किए गए सवालों के जवाब में आईएसओ / आईईसी मानक एसक्यूएल का उपयोग करना चाहिए।