डेटाबेस इंजन में चीजों को कैसे निष्पादित किया जाता है, इसका क्रम यहां दिया गया है।
ध्यान दें कि यह एक अर्थपूर्ण दृष्टिकोण है कि चीजों को कैसे निष्पादित किया जाता है, डेटाबेस चीजों को एक अलग क्रम में कर सकता है, लेकिन इसे परिणाम उत्पन्न करना होगा जैसे कि यह इस तरह से किया गया था।
- सबसे पहले FROM-भाग का मूल्यांकन किया जाता है, मुझे डेटा कहां से मिलेगा
- फिर WHERE-भाग का मूल्यांकन किया जाता है कि हम किन पंक्तियों में रुचि रखते हैं
- फिर ग्रुप बाय-पार्ट का मूल्यांकन किया जाता है, हम परिणामी पंक्तियों को कैसे जोड़ते हैं
- फिर HAVING- भाग का मूल्यांकन किया जाता है कि हम किन समूहों में रुचि रखते हैं
- फिर ORDER BY-part का मूल्यांकन किया जाता है, हम उन पंक्तियों/समूहों को किस क्रम में चाहते हैं
- आखिरकार, SELECT-भाग का मूल्यांकन किया जाता है कि हम किन कॉलमों में रुचि रखते हैं
कुछ डेटाबेस इंजन आपको चयन-भाग में दूसरे कॉलम द्वारा समूह में "ग्रुप बाय 2" कहकर इसे रोकने की अनुमति देते हैं, लेकिन यदि आप उपरोक्त आदेश से चिपके रहते हैं, तो आपको अब तक पता होना चाहिए कि आपके कोड का कारण क्या है काम यह नहीं है कि कुल या कुल 2 (अभी तक) नामों के साथ कोई कॉलम नहीं है।
दूसरे शब्दों में, आपको या तो दो भावों को दोहराना होगा, या इसे करने का दूसरा तरीका खोजना होगा।
उप-क्वेरी का उपयोग करने के लिए आप क्या कर सकते हैं (बशर्ते आप एक MySQL संस्करण पर हैं जो इसका समर्थन करता है):
SELECT total, total2, total+total2 as grandtotal
FROM (
SELECT sum(EXPR) as total, sum(EXPR) as total2
FROM tablename
) x
टिप्पणी के अनुसार बाकी को हटा दें।
<स्ट्राइक>मैं MySQL के बारे में ज्यादा नहीं जानता, हालांकि आपको उप-क्वेरी को उपनाम देना पड़ सकता है:स्ट्राइक>
...
FROM tablename
) AS x
^-+^
|
+-- add this
कुछ डेटाबेस इंजन उपक्वेरी को अलियासिंग करते समय AS कीवर्ड का उपयोग करने की अनुमति नहीं देते हैं, इसलिए यदि उपरोक्त काम नहीं करता है, तो यह प्रयास करें:
...
FROM tablename
) x
^
|
+-- add this