ON / WHERE හි කොන්දේසි සහිත ප්රකාශ යෙදීම
මෙහිදී මම තාර්කික විමසුම් සැකසුම් පියවර ගැන පැහැදිලි කර ඇත්තෙමි.
යොමුව: ඇතුළත Microsoft® SQL Server T 2005 T-SQL විමසුම්
ප්රකාශක: මයික්රොසොෆ්ට් ප්රෙස්
පබ් දිනය: මාර්තු 07, 2006
මුද්රණය ISBN-10: 0-7356-2313-9
මුද්රණය ISBN-13: 978-0-7356-2313-2
පිටු: 640
Microsoft® SQL Server ™ 2005 T-SQL විමසුම තුළ
(8) SELECT (9) DISTINCT (11) TOP <top_specification> <select_list>
(1) FROM <left_table>
(3) <join_type> JOIN <right_table>
(2) ON <join_condition>
(4) WHERE <where_condition>
(5) GROUP BY <group_by_list>
(6) WITH {CUBE | ROLLUP}
(7) HAVING <having_condition>
(10) ORDER BY <order_by_list>
අනෙකුත් ක්රමලේඛන භාෂාවන්ට වඩා වෙනස් SQL හි පළමු කැපී පෙනෙන අංගය වන්නේ කේතය සැකසූ අනුපිළිවෙලයි. බොහෝ ක්රමලේඛන භාෂාවල, කේතය එය ලියා ඇති අනුපිළිවෙලට සකසනු ලැබේ. SQL හි, සැකසූ පළමු වගන්තිය FROM වගන්තිය වන අතර, පළමුව පෙනෙන SELECT වගන්තිය අවසන් වරට පාහේ සකසනු ලැබේ.
සෑම පියවරක්ම පහත පියවරට ආදානය ලෙස භාවිතා කරන අථත්ය වගුවක් ජනනය කරයි. මෙම අථත්ය වගු ඇමතුම්කරුට ලබා ගත නොහැක (සේවාදායක යෙදුම හෝ බාහිර විමසුම). අවසාන පියවර මගින් ජනනය කරන ලද වගුව පමණක් නැවත අමතන්නා වෙත යවනු ලැබේ. විමසුමක කිසියම් වගන්තියක් නිශ්චිතව දක්වා නොමැති නම්, අනුරූප පියවර සරලව මඟ හරිනු ලැබේ.
තාර්කික විමසුම් සැකසුම් අවධීන් පිළිබඳ කෙටි විස්තරයක්
පියවර පිළිබඳ විස්තරය දැනට එතරම් අර්ථවත් නොවන බව පෙනේ නම් ඕනෑවට වඩා කරදර නොවන්න. මේවා යොමු කිරීමක් ලෙස සපයනු ලැබේ. සිද්ධි උදාහරණයෙන් පසුව එන කොටස් වඩාත් විස්තරාත්මකව පියවර ආවරණය කරයි.
FROM: FROM වගන්තියේ පළමු වගු දෙක අතර කාටිසියානු නිෂ්පාදනයක් (හරස් බැඳීම) සිදු කරන අතර එහි ප්රති V ලයක් ලෙස VT1 අතථ්ය වගුව ජනනය වේ.
ON: ON පෙරණය VT1 සඳහා යොදනු ලැබේ. <join_condition>
සත්යය වන පේළි පමණක් VT2 ට ඇතුළත් කර ඇත.
පිටත (එක්වන්න): පිටත සම්බන්ධතාවයක් නිශ්චිතව දක්වා තිබේ නම් (CROSS JOIN හෝ INNER JOIN වලට වෙනස්ව), සංරක්ෂිත වගුවේ හෝ ගැලපීමක් සොයා නොගත් වගු වල පේළි VT2 සිට පේළි වලට පිටත පේළි ලෙස එකතු කර ජනනය කරයි VT3. FROM වගන්තියේ වගු දෙකකට වඩා වැඩි ගණනක් දිස්වන්නේ නම්, සියලු වගු සැකසෙන තෙක් අවසාන සම්බන්ධතාවයේ ප්රති result ලය සහ FROM වගන්තියේ ඊළඟ වගුව අතර පියවර 1 සිට 3 දක්වා නැවත නැවතත් යොදනු ලැබේ.
WHERE: WHTE පෙරණය VT3 සඳහා යොදනු ලැබේ. <where_condition>
සත්යය වන පේළි පමණක් VT4 ට ඇතුළත් කර ඇත.
GROUP BY: GROUP BY වගන්තියේ දක්වා ඇති තීරු ලැයිස්තුව මත පදනම්ව VT4 හි පේළි කණ්ඩායම් වශයෙන් සකස් කර ඇත. VT5 ජනනය වේ.
කියුබ් | ROLLUP: VT5 සිට පේළි වලට සුපිරි කණ්ඩායම් (කණ්ඩායම් කණ්ඩායම්) එකතු කර VT6 ජනනය කරයි.
HAVING: HAVING පෙරණය VT6 සඳහා යොදනු ලැබේ. <having_condition>
VT7 වෙත ඇතුළත් කර ඇත්තේ සත්ය වන කණ්ඩායම් පමණි .
තෝරන්න: VT8 ජනනය කරමින් SELECT ලැයිස්තුව සකසනු ලැබේ.
DISTINCT: VT8 වෙතින් අනුපිටපත් පේළි ඉවත් කරනු ලැබේ. VT9 ජනනය වේ.
නියෝගය: VT9 හි පේළි ORDER BY වගන්තියේ දක්වා ඇති තීරු ලැයිස්තුවට අනුව වර්ග කර ඇත. කර්සරයක් ජනනය වේ (VC10).
ඉහළට: VC10 ආරම්භයේ සිට නිශ්චිත අංකය හෝ පේළි ප්රතිශතය තෝරා ඇත. VT11 වගුව ජනනය කර නැවත අමතන්නා වෙත යවනු ලැබේ.
එබැවින්, (INNER JOIN) ON WHERE වගන්තිය යෙදීමට පෙර දත්ත පෙරහන් කරනු ඇත (VT හි දත්ත ගණන මෙහිම අඩු වේ). පසුකාලීන බැඳීම් කොන්දේසි පෙරහන් කළ දත්ත සමඟ ක්රියාත්මක වන අතර එය කාර්ය සාධනය වැඩි දියුණු කරයි. ඊට පසු WHERE කොන්දේසිය පමණක් පෙරහන් කොන්දේසි අදාළ වේ.
(ON / WHERE හි කොන්දේසි සහිත ප්රකාශයන් යෙදීමෙන් අවස්ථා කිහිපයකදී විශාල වෙනසක් සිදු නොවේ. මෙය රඳා පවතින්නේ ඔබ එකතු වී ඇති වගු ගණන සහ එක් එක් සම්බන්ධක වගුවල ඇති පේළි ගණන මතය)