दिलचस्प पोस्ट
कैसे xcode में ड्रॉपडाउन बनाने के लिए? java.util.Date बनाम जावा.sql.Date नेस्टेड रीसाइक्लर देखने की ऊँचाई अपनी सामग्री को लपेट नहीं करती है जावास्क्रिप्ट के साथ एकाधिक बायां-हाथ असाइनमेंट मैं अपने सी # कार्यक्रम के एक पैनल के भीतर एक और अनुप्रयोग कैसे चला सकता हूँ? Xcode 5 दुर्घटनाएं – एक्सकोड अनपेक्षित रूप से छोड़ दें JQuery का उपयोग करके सफारी का पता लगाएं PHP को 0 को स्ट्रिंग के बराबर क्यों मानता है? नियमित अभिव्यक्ति कैसे है? (? <= #) + (? = #) 'काम करता है? नोटपैड ++ क्या सभी छिपे हुए अक्षरों को दिखाता है? एनएसयूआरकनेक्शन भेजएएसआईसीसीनसुरसएक्स्ट को बंद होने से वैरिएबल नहीं मिल सकता है ट्विटर बूटस्ट्रैप एकाधिक मोडल त्रुटि जावास्क्रिप्ट में समय के अंतर की जांच करें एक HTML तालिका बनाएं जहां प्रत्येक टीआर एक फॉर्म है MATLAB में मैट्रिक्स के सरणी

SQL क्वेरी के निष्पादन के आदेश

मुझे इस प्रश्न के निष्पादन के आदेश से भ्रमित है, कृपया मुझे यह बताएं। मुझे इसमें शामिल होने में उलझन में है जब फ़ंक्शन को लागू किया जाता है, फ़ंक्शन को कहा जाता है, केस के साथ एक नया कॉलम जोड़ा जाता है और जब सीरियल नंबर जोड़ा जाता है कृपया इस सब के निष्पादन के आदेश की व्याख्या करें।

select Row_number() OVER(ORDER BY (SELECT 1)) AS 'Serial Number', EP.FirstName,Ep.LastName,[dbo].[GetBookingRoleName](ES.UserId,EP.BookingRole) as RoleName, (select top 1 convert(varchar(10),eventDate,103)from [3rdi_EventDates] where EventId=13) as EventDate, (CASE [dbo].[GetBookingRoleName](ES.UserId,EP.BookingRole) WHEN '90 Day Client' THEN 'DC' WHEN 'Association Client' THEN 'DC' WHEN 'Autism Whisperer' THEN 'DC' WHEN 'CampII' THEN 'AD' WHEN 'Captain' THEN 'AD' WHEN 'Chiropractic Assistant' THEN 'AD' WHEN 'Coaches' THEN 'AD' END) as Category from [3rdi_EventParticipants] as EP inner join [3rdi_EventSignup] as ES on EP.SignUpId = ES.SignUpId where EP.EventId = 13 and userid in ( select distinct userid from userroles --where roleid not in(6,7,61,64) and roleid not in(1,2)) where roleid not in(19, 20, 21, 22) and roleid not in(1,2)) 

यह फ़ंक्शन है जिसे उपर्युक्त क्वेरी से कहा जाता है।

 CREATE function [dbo].[GetBookingRoleName] ( @UserId as integer, @BookingId as integer ) RETURNS varchar(20) as begin declare @RoleName varchar(20) if @BookingId = -1 Select Top 1 @RoleName=R.RoleName From UserRoles UR inner join Roles R on UR.RoleId=R.RoleId Where UR.UserId=@UserId and R.RoleId not in(1,2) else Select @RoleName= RoleName From Roles where RoleId = @BookingId return @RoleName end 

Solutions Collecting From Web of "SQL क्वेरी के निष्पादन के आदेश"

SQL के निष्पादन का कोई आदेश नहीं है। एक घोषणात्मक भाषा है ऑप्टिमाइज़र किसी भी ऑर्डर को चुनने के लिए स्वतंत्र है क्योंकि यह सर्वोत्तम निष्पादन समय का उत्पादन करने के लिए उचित लगता है। किसी भी एसक्यूएल क्वेरी को देखते हुए, मूल रूप से किसी को यह निष्पादन आदेश जानता है ढोंग करने के लिए असंभव है। यदि आप इसमें शामिल स्कीमा (सटीक तालिकाओं और अनुक्रमित परिभाषा) और अनुमानित कार्डिनेलिज़ (डेटा का आकार और चाबी की चुनिंदा) के बारे में विस्तृत जानकारी जोड़ते हैं, तो कोई संभावित निष्पादन आदेश पर अनुमान लगा सकता है।

अंततः, एकमात्र सही 'ऑर्डर' एक ही आयन का वास्तविक आचरण योजना है। एसक्यूएल सर्वर प्रोफाइलर इवेंट क्लासेस का उपयोग करके और ग्राफ़िक निष्पादन योजनाओं (SQL सर्वर प्रबंधन स्टूडियो) प्रदर्शित करते हुए निष्पादन योजनाओं को प्रदर्शित करना देखें।

एक पूरी तरह से अलग चीज है, हालांकि क्वेरी, सबक्वैरीज़ और भाव कैसे स्वयं को 'वैधता' में प्रोजेक्ट करते हैं उदाहरण के लिए यदि आपके पास SELECT प्रोजेक्शन सूची में एक एलाइज्ड अभिव्यक्ति है, तो क्या आप ऊर्हर खंड में उपनाम का उपयोग कर सकते हैं? इस कदर:

 SELECT a+b as c FROM t WHERE c=...; 

c उपनाम का उपयोग किस खंड में मान्य है? जवाब न है। प्रश्न एक वाक्य रचना वृक्ष का निर्माण करते हैं, और पेड़ की एक छोटी शाखा वृक्ष में उच्च परिभाषित कुछ संदर्भ नहीं हो सकती। यह जरूरी नहीं कि 'निष्पादन' का क्रम है, एक वाक्य रचना पार्सिंग समस्या का अधिक है। यह इस कोड को सी # में लिखने के बराबर है:

 void Select (int a, int b) { if (c = ...) then {...} int c = a+b; } 

जैसे कि सी # में यह कोड संकलित नहीं होगा क्योंकि चर को परिभाषित करने से पहले उपयोग किया जाता है, उपरोक्त चयन सही तरीके से संकलित नहीं होगा क्योंकि उपनाम c वास्तव में परिभाषित की तुलना में पेड़ में संदर्भित है।

दुर्भाग्यवश, सी / सी # भाषा पार्सिंग के प्रसिद्ध नियमों के विपरीत, एसक्यूएल नियम, क्वेरी ट्री कैसे बनाया गया है, यह किसी तरह गूढ़ है। सिंगल एसक्यूएल स्टेटमेंट प्रोसेसिंग में उनका एक संक्षिप्त उल्लेख है लेकिन वे कैसे तैयार किए गए हैं की विस्तृत चर्चा है, और कौन सी ऑर्डर वैध है और क्या नहीं, मुझे किसी भी स्रोत का पता नहीं है। मैं यह नहीं कह रहा हूं कि अच्छे स्रोत नहीं हैं, मुझे यकीन है कि इसमें से कुछ अच्छी एसक्यूएल किताबें इस विषय को कवर करती हैं।

ध्यान दें कि सिंटैक्स ट्री ऑर्डर SQL पाठ के विज़ुअल ऑर्डर से मेल नहीं खाता है। उदाहरण के लिए, ऑर्डर बाय क्लॉज आमतौर पर एसक्यूएल पाठ में अंतिम है, लेकिन एक वाक्य रचना वृक्ष के रूप में यह सब कुछ ऊपर बैठता है (यह चयन का उत्पादन करता है, इसलिए यह चुने गए स्तंभों से ऊपर बैठकर बोलने के लिए) और जैसा कि ऐसा है c उपनाम को संदर्भित करने के लिए वैध:

 SELECT a+b as c FROM t ORDER BY c; 

अपडेट किया गया

असल में यह है: चयन कथन के लॉजिकल प्रोसेसिंग ऑर्डर

निम्न चरणों में एक चयन कथन के लिए तार्किक प्रसंस्करण आदेश, या बाध्यकारी आदेश दिखाता है। यह आदेश निर्धारित करता है कि जब एक चरण में परिभाषित ऑब्जेक्ट को बाद के चरणों में क्लॉज के लिए उपलब्ध कराया जाता है। उदाहरण के लिए, यदि क्वेरी प्रोसेसर FROM क्लॉज में परिभाषित तालिकाओं या दृश्यों (एक्सेस) को बाइंड कर सकता है, तो ये ऑब्जेक्ट और उनके कॉलम सभी बाद के चरणों में उपलब्ध कराए जाते हैं। इसके विपरीत, क्योंकि SELECT खंड चरण 8 है, उस खंड में परिभाषित किसी भी स्तंभ उपनाम या व्युत्पन्न कॉलम को पूर्ववर्ती धाराओं द्वारा संदर्भित नहीं किया जा सकता है। हालांकि, इन्हें बाद के खंडों द्वारा संदर्भित किया जा सकता है जैसे कि ऑर्डर बाय क्लॉज ध्यान दें कि कथन के वास्तविक भौतिक निष्पादन को क्वेरी प्रोसेसर द्वारा निर्धारित किया जाता है और क्रम इस सूची से भिन्न हो सकता है।

  1. से
  2. पर
  3. शामिल हों
  4. कहा पे
  5. समूह द्वारा
  6. घन के साथ या रोलअप के साथ
  7. होने
  8. चुनते हैं
  9. DISTINCT
  10. द्वारा आदेश
  11. टॉप

प्रश्नों को आम तौर पर अनुवर्ती आदेश (एसक्यूएल सर्वर) में संसाधित किया जाता है मुझे नहीं पता है कि क्या अन्य RDBMS ऐसा करते हैं

 FROM [MyTable] ON [MyCondition] JOIN [MyJoinedTable] WHERE [...] GROUP BY [...] HAVING [...] SELECT [...] ORDER BY [...] 

एसक्यूएल एक घोषणात्मक भाषा है, जिसका अर्थ है कि यह एसक्यूएल इंजन को क्या करना है, न कि कैसे। यह सी जैसे अनिवार्य भाषा के विपरीत है, जिसमें कुछ करना है स्पष्ट रूप से बाहर रखा गया है।

इसका मतलब यह है कि अपेक्षित के रूप में सभी बयानों को निष्पादित नहीं किया जाएगा विशेष रूप से नोट बूलियन अभिव्यक्तियां हैं, जो बाएं से दाएं से लिखित में मूल्यांकन नहीं कर सकते हैं। उदाहरण के लिए, शून्य कोड द्वारा विभाजित किए बिना निष्पादित करने के लिए निम्न कोड की गारंटी नहीं है:

 SELECT 'null' WHERE 1 = 1 OR 1 / 0 = 0 

इसका कारण यह है कि क्वेरी ऑप्टिमाइज़र एक बयान निष्पादित करने का सर्वोत्तम (सबसे कुशल) तरीका चुनता है। इसका मतलब यह है कि, उदाहरण के लिए, एक मान को लोड करने और फ़िल्टर करने से पहले फ़िल्टर किया जा सकता है, जिसके कारण त्रुटि उत्पन्न होती है। एक उदाहरण के लिए ऊपर दी गई दूसरी लिंक देखें

देखें: यहां और यहां ।

"निष्पादन के आदेश" संभवतः एसक्यूएल प्रश्नों के लिए एक खराब मानसिक मॉडल है। वास्तव में एक एकल प्रश्न लिखना कठिन है जो वास्तव में निष्पादन के आदेश पर निर्भर करेगा (यह एक अच्छी बात है) इसके बजाय आपको सभी को शामिल करने और जहां एक साथ होकर (एक टेम्पलेट की तरह)

उसने कहा कि आप निष्पादन योजनाओं को प्रदर्शित कर सकते हैं, जिसे आपको इसके बारे में जानकारी देना चाहिए।

हालांकि जब से यह स्पष्ट नहीं है कि आप निष्पादन के आदेश को क्यों जानना चाहते हैं, तो मैं इस प्रश्न के लिए एक मानसिक मॉडल प्राप्त करने की कोशिश कर रहा हूं ताकि आप इसे किसी तरह ठीक कर सकें। इस तरह से मैं आपकी क्वेरी "अनुवाद" करूँगा, हालांकि मैंने इस तरह के विश्लेषण के साथ अच्छा किया है, इसमें कुछ भूरे रंग का क्षेत्र है, जिसमें यह कितना सटीक है

से और कहाँ क्लाउड

  • मुझे सभी इवेंट प्रतिभागी पंक्तियाँ दें from [3rdi_EventParticipants

  • मुझे इवेंट पर इवेंट प्रतिभागी पंक्तियों से मेल खाने वाली सभी इवेंट साइनअप पंक्तियों को भी ई-मेल के inner join 3rdi_EventSignup] as ES on EP.SignUpId = ES.SignUpId

  • लेकिन केवल घटना के लिए 13 EP.EventId = 13

  • और केवल अगर प्रयोक्ता आईडी का उपयोगकर्ता भूमिकाओं तालिका में एक रिकॉर्ड है जहां की भूमिका आईडी 1,2,19,20,21,22 userid in (
    select distinct userid from userroles
    --where roleid not in(6,7,61,64) and roleid not in(1,2))
    where roleid not in(19, 20, 21, 22) and roleid not in(1,2))
    userid in (
    select distinct userid from userroles
    --where roleid not in(6,7,61,64) and roleid not in(1,2))
    where roleid not in(19, 20, 21, 22) and roleid not in(1,2))

चुनें कलेक्शन

  • प्रत्येक पंक्तियों के लिए मुझे Row_number() OVER(ORDER BY (SELECT 1)) AS 'Serial Number', में एक अद्वितीय आईडी Row_number() OVER(ORDER BY (SELECT 1)) AS 'Serial Number',

  • प्रतिभागियों का पहला नाम EP.FirstName

  • प्रतिभागी अंतिम नाम Ep.LastName

  • बुकिंग भूमिका का नाम GetBookingRoleName

  • इवेंट तिथियों में देखें और पता करें कि इवेंटआईडी = 13 जहां पहले इवेंट आईडी = 13 है जो आपको मिलती है (select top 1 convert(varchar(10),eventDate,103)from [3rdi_EventDates] where EventId=13) as EventDate

  • अंत में श्रेणी में GetBookingRoleName का अनुवाद करें। मेरे पास इस के लिए एक टेबल नहीं है इसलिए मैं मैन्युअल रूप से इसे मैप करूंगा (CASE [dbo].[GetBookingRoleName](ES.UserId,EP.BookingRole)
    WHEN '90 Day Client' THEN 'DC' WHEN 'Association Client' THEN 'DC' WHEN 'Autism Whisperer' THEN 'DC' WHEN 'CampII' THEN 'AD' WHEN 'Captain' THEN 'AD' WHEN 'Chiropractic Assistant' THEN 'AD' WHEN 'Coaches' THEN 'AD' END) as Category
    (CASE [dbo].[GetBookingRoleName](ES.UserId,EP.BookingRole)
    WHEN '90 Day Client' THEN 'DC' WHEN 'Association Client' THEN 'DC' WHEN 'Autism Whisperer' THEN 'DC' WHEN 'CampII' THEN 'AD' WHEN 'Captain' THEN 'AD' WHEN 'Chiropractic Assistant' THEN 'AD' WHEN 'Coaches' THEN 'AD' END) as Category

तो कुछ नोट्स यहां हैं जब आप शीर्ष चुनते हैं तो आप किसी भी चीज़ से ऑर्डर नहीं कर रहे हैं आपको संभवत: वहां से आदेश करना चाहिए। आप यह भी आसानी से डाल सकते हैं कि आपके क्लाउड जैसे उदाहरण से

 from [3rdi_EventParticipants] as EP inner join [3rdi_EventSignup] as ES on EP.SignUpId = ES.SignUpId, (select top 1 convert(varchar(10),eventDate,103) from [3rdi_EventDates] where EventId=13 Order by eventDate) dates