এসকিউএল সার্ভারে গ্রুপ বয়, থাকার এবং কোথায় ক্লজের এক্সিকিউশন ক্রম?


95

আমি যখন একটি এসকিউএল কোয়েরি প্রয়োগ করি তখনই আমি কোনও বিধি ব্যবহার করি GROUP BYএবং এর HAVINGসাথে আমি বিভ্রান্ত হয়ে পড়েছি WHERE। কোনটি প্রথমে মৃত্যুদন্ড কার্যকর করা হয়? ক্রম কি?

উত্তর:


188

ক্রমানুসারে:

থেকে & JOIN গুলি নির্ধারণ & ফিল্টার সারি
কোথায় সারি উপর আরো ফিল্টার
গ্রুপ দলে সেই সারি সম্মিলন
করে আমরা সহজেই ফিল্টার গ্রুপ
দ্বারা অর্ডার আয়োজন অবশিষ্ট সারি / গ্রুপ
সীমাবদ্ধ করে অবশিষ্ট সারি / গোষ্ঠীর উপরে ফিল্টার


এর কোন রেফারেন্স আছে কি ??
গিশান

4
@ গিশান, দেখুনSET SHOWPLAN_ALL ON
কেএম।

হাই, আমার একটি প্রশ্ন আছে। শর্তটি যেখানে শর্তটি অগ্রাহ্য করবে তখন কেস স্টেটমেন্টটি দেবে?
MAX

4
কি নির্বাচন ক্লজ সম্পর্কে? এটা কি শেষ?
MAX

সংক্ষিপ্ত এবং সংক্ষিপ্ত উত্তর! ধন্যবাদ!
অভিষেক ঘোষ

15

এসকিএল সার্ভারের সম্পূর্ণ ক্রম এখানে রয়েছে:

1.  FROM
2.  ON
3.  JOIN
4.  WHERE
5.  GROUP BY
6.  WITH CUBE or WITH ROLLUP
7.  HAVING
8.  SELECT
9.  DISTINCT
10. ORDER BY
11. TOP

সুতরাং উপরের তালিকা থেকে, আপনি সহজেই বুঝতে পারবেন GROUP BY, HAVING and WHEREযেটির কার্যকরকরণের ক্রমটি হল:

1.  WHERE
2.  GROUP BY
3.  HAVING

মাইক্রোসফ্ট থেকে এটি সম্পর্কে আরও তথ্য পান


SELECT * FROM table1 INNER JOIN table2 ON col = col2 WHERE table1.col = @valএখানে যোগদানের পরে আসে, এবং নির্বাচন আগে আসে, কোন ব্যাখ্যা?
নুব

এটি একটি এসকিউএল স্টেটমেন্ট লেখার বাক্য গঠন মাত্র। আমি যে ক্রমটি উল্লেখ করেছি তা হ'ল কোনও এসকিউএল ইঞ্জিন মূল্যায়ন করে real এর অর্থ যদি আপনার কোয়েরি সিনট্যাক্সটি সঠিক হয় তবে ইঞ্জিনটি FROMপ্রথমে তারপরে ONএবং তার পরে আরও মূল্যায়ন করে।
মোঃ সুমন কবির

4
@ শৈলজা গুপ্তকাপুর আপনি এই ব্লগগুলি

যদি নির্বাচনের আগে WHERE আসে তবে কেন এটি একটি সারিতে ফিরে আসে? foo থেকে যোগফল (1) নির্বাচন করুন যেখানে 1 = 0
টনি বি

8

যেখানে প্রথম, তারপরে আপনি কোয়েরির ফলাফলকে গ্রুপ করেন এবং সর্বশেষে তবে গ্রুপিং ফলাফল ফিল্টার করার জন্য সর্বনিম্ন কিন্তু হ্যাভিং-ক্লজ নেওয়া হয় না। এটি "যৌক্তিক" আদেশ, আমি জানি না কীভাবে ইঞ্জিনে এটি প্রযুক্তিগতভাবে বাস্তবায়িত হয়।


4
অপরিহার্যতা যোগ করে যে অপ্টিমাইজারটি যদি সামগ্রিকের উপর নির্ভর না করে তবে ক্লজগুলি HAVING থেকে WHERE এ স্থানান্তর করতে পারে। এটি প্রদর্শিত ফলাফলগুলিকে প্রভাবিত করবে না।
ড্যামিয়েন_এ_বিশ্বাসীরা

2

আমি মনে করি এটি ইঞ্জিনে প্রয়োগ করা হয়েছে যেমন ম্যাথিয়াস বলেছেন: যেখানে, গ্রুপ, হ্যাভিং

অনলাইনে এমন একটি রেফারেন্স সন্ধানের চেষ্টা করা হয়েছিল যা পুরো ক্রমটি তালিকাভুক্ত করে (অর্থাত "" নির্বাচন "নীচে নীচে আসে) তবে আমি এটি খুঁজে পাচ্ছি না। সলিড কোয়ালিটি লার্নিংয়ের লেখা "ইনসাইড মাইক্রোসফ্ট এসকিউএল সার্ভার 2005" বইয়ে এটি বিশদ ছিল

সম্পাদনা: একটি লিঙ্ক পাওয়া গেছে: http://blogs.x2line.com/al/archive/2007/06/30/3187.aspx


আপনি :-) এর সাথে যুক্ত খুব সুন্দর ব্যাখ্যা।
sleske

4
লিঙ্কটি মারা গেছে। যদি আপনি এটি ঠিক করতে পারেন তবে দুর্দান্ত হবে :)
আকাশ কেসি

2

ওরাকল 12 সি তে, আপনি নীচের দুটি অনুক্রমের মধ্যে উভয় কোড চালাতে পারেন:

Where
Group By
Having

বা

Where 
Having
Group by

1

আপনি যদি প্রয়োগ করতে চান তবে আপনাকে কী করতে হবে তা ভেবে দেখুন:

  • কোথায় : এটি জয়েন্ট অপারেশনগুলি চালিত করা প্রয়োজন।
  • গ্রুপ দ্বারা : আপনি যোগদানের ফলাফলগুলিকে "গোষ্ঠী" দ্বারা গ্রুপ নির্দিষ্ট করেছেন, তারপরে এটি পুরোপুরি ব্যবহারের পরে, জয়েন অপারেশন শেষে করতে হবে।
  • হ্যাভিং : গ্রোপ বাই এক্সপ্রেশন যেমন বলেছে ততক্ষণ ফিল্টারিংয়ের জন্য A তারপরে, এটি গ্রুপের পরে কার্যকর করা হয়।

অর্ডারটি যেখানে, গ্রুপ এবং হ্যাভিংয়ের।


আপনি এখানে যা ব্যাখ্যা করেছেন তা উজ্জ্বল। এটি HAVING সম্পর্কিত আমার সন্দেহ পরিষ্কার করেছে। সুতরাং সংক্ষেপে বলা যায় - GROUP BY & HAVING SELECT & WHERE হিসাবে একই কাজ করে। HAVING ধারাটি সর্বদা সম্পূর্ণ টেবিলের ডেটাতে চলতে থাকে GROUP- র শর্তে চিত্র গ্রহণ করে এবং গ্রুপিত ডেটা নয়।
নবীন কুমার


0

ক্লজ থাকা গ্রুপের আগে / ক্লজের আগে আসতে পারে।

উদাহরণ: * FROM test_std নির্বাচন করুন; রোল_নো এসএনএম ডব পাঠান


     1 John       27-AUG-18 Wills     
     2 Knit       27-AUG-18 Prestion  
     3 Perl       27-AUG-18 Wills     
     4 Ohrm       27-AUG-18 Woods     
     5 Smith      27-AUG-18 Charmy    
     6 Jony       27-AUG-18 Wills     
       Warner     20-NOV-18 Wills     
       Marsh      12-NOV-18 Langer    
       FINCH      18-OCT-18 Langer    

9 টি সারি নির্বাচন করা হয়েছে।

পাঠদান, গণনা ( ) গণনা ( )> 1 টি টিচ দ্বারা 1 টি গোষ্ঠী থাকা ( )> 1 টি গোষ্ঠী থেকে নির্বাচন করুন ;

শিক্ষাদান করুন


ল্যাঙ্গার 2 উইলস 4


0

এটি একটি কোয়েরি কার্যকর করার এসকিউএল অর্ডার,

এখানে চিত্র বর্ণনা লিখুন

আপনি এই নিবন্ধ থেকে উদাহরণ সহ ফাঁসির আদেশ পরীক্ষা করতে পারেন ।

আপনার নীচের প্রশ্নের জন্য নীচের লাইনগুলি সহায়ক হতে পারে এবং সরাসরি এই নিবন্ধ থেকে পাওয়া যায় ।

  1. গ্রুপ দ্বারা -> WHERE সীমাবদ্ধতা প্রয়োগের পরে অবশিষ্ট সারিগুলি গ্রুপ বাই দফায় বর্ণিত কলামে সাধারণ মানের উপর ভিত্তি করে গোষ্ঠীভুক্ত হয়। দলবদ্ধকরণের ফলস্বরূপ, column কলামটিতে অনন্য মূল্য রয়েছে যতগুলি সারি থাকবে only স্পষ্টতই, এর অর্থ এই যে আপনার যখন আপনার ক্যোয়ারীতে মোট ফাংশন থাকে তখন আপনার এটি ব্যবহার করা উচিত।
  1. HAVING -> যদি ক্যোয়ারিতে একটি অনুচ্ছেদে গ্রুপ থাকে তবে HAVING ধারাটিতে সীমাবদ্ধতাগুলি পরে শ্রেণিবদ্ধ সারিগুলিতে প্রয়োগ করা হয়, সীমাবদ্ধতা পূরণ না করে এমন গোষ্ঠীযুক্ত সারিগুলি ফেলে দিন। WHERE ধারাটির মতো, বেশিরভাগ ডাটাবেসগুলিতে এই পদক্ষেপ থেকে উপাধিও অ্যাক্সেসযোগ্য নয়।

তথ্যসূত্র:


-2

নির্বাচন
থেকে
যোগদান করে
কোথায়
একদল
করে আমরা সহজেই
আদেশ দ্বারা


13
এটা আসলে ভুল। এমএস সার্টিফাইড প্রশিক্ষক এবং অফিসিয়াল প্রশিক্ষণ উপাদান অনুসারে, অর্ডার বাই নির্বাচন করার পরে। যখন আপনি এটি সম্পর্কে চিন্তা করেন তখন যৌক্তিক of ভার্চুয়াল টেবিলটি অর্ডার করা বোকামি হবে যা আপনি এখনও এনেছেন এবং আঠালো করেন নি। :)
সিমে করুন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.