ဒီေန႔ Select Statement အေၾကာင္းပဲ ဆက္ရေအာင္ဗ်ာ။ WHERE အေၾကာင္းပဲ ဆက္ေျပာပါ့မယ္။ အခုကြၽန္ေတာ္က ကုန္လက္က်န္ ၁၀ ခုထက္နည္းျပီး ေစ်းႏႈန္းကလည္း ၁၀၀၀၀ အထက္ရွိတဲ႔ item ေတြရဲ့ list ကိုၾကည့္ခ်င္တယ္။ ဒါဆိုရင္ ဒီလိုေရးရမွာေပါ့…
WHERE balance < 10 AND price > 10000
Result :
| ItemID | ItemName | CategoryID | Price | Balance | Description |
| 3 | ViewSonic 17” Flat CRT | 11 | 15000 | 5 | - |
| 5 | SONY 32” TV | 3 | 900000 | 1 | - |
| 6 | Moon 16” Stand Fan | 3 | 20000 | 3 | - |
ဒီ query ေလးမွာ ကြၽန္ေတာ္စစ္ခ်င္တဲ႔ condition က ၂ ခုရွိေနတယ္။ balance ၁၀ ခုထက္နည္းရမွာရယ္၊ price ၁၀၀၀၀ ထက္မ်ားရမွာရယ္။ အဲ့ဒီ condition ၂ ခုလံုးမွန္တာကိုပဲ လိုခ်င္တာ ျဖစ္ေတာ့ Where ေနာက္မွာ condition ၂ ခုကို AND နဲ႔ဆက္ျပီးေရးရပါတယ္။ ကြၽန္ေတာ္တို႔ စစ္ခ်င္တဲ႔ condition ေတြ ၁ခုထက္ပိုမ်ားလာျပီဆိုရင္ အဲ့ဒီ condition ေတြၾကားမွာ AND ဒါမွမဟုတ္ OR ဆိုတဲ႔ keyword ေလးေတြထည့္ေရးေပးရမယ္။ အေပၚက query လိုမ်ိဳး condition ၂ ခုလံုးမွန္မွ result ထြက္ခ်င္တယ္ဆိုရင္ AND ကိုသံုးရျပီး။ condition တစ္ခုမဟုတ္ တစ္ခုမွန္ရံုနဲ႔ result ထြက္ခ်င္တယ္ဆိုရင္ေတာ့ OR ကိုသံုးရမွာပါ။ ဥပမာ အေနနဲ႔ ကြၽန္ေတာ္က electronic ပစၥည္းေတြနဲ႔ computer ပစၥည္းေတြကိုပဲ ၾကည့္ခ်င္တယ္ ဆိုပါစို။ ဒါဆို ဒီလိုေရးရမွာပါ…
WHERE CategoryID = 1 OR CategoryID = 3
Result :
| ItemID | ItemName | CategoryID | Price | Balance | Description |
| 1 | Sony Optical Mouse | 1 | 2500 | 10 | - |
| 2 | A4 Tech Keyboard | 1 | 5000 | 1 | - |
| 5 | SONY 32” TV | 3 | 900000 | 1 | - |
| 6 | Moon 16” Stand Fan | 3 | 20000 | 3 | - |
တခါတေလမွာ ကြၽန္ေတာ္တို႔စစ္ခ်င္တဲ႔ condition က value ၂ ခုၾကားျဖစ္ခဲ႔ရင္ BETWEEN ကိုလည္း သံုးလို႔ရပါတယ္။ ဥပမာ balance ၂ ခုကေန ၁၀ ခု ၾကားထဲက record ေတြ လိုခ်င္တယ္ဆိုရင္…
WHERE balance BETWEEN 2 AND 10
Result :
| ItemID | ItemName | CategoryID | Price | Balance | Description |
| 1 | Sony Optical Mouse | 1 | 2500 | 10 | - |
| 3 | ViewSonic 17” Flat CRT | 11 | 15000 | 5 | - |
| 6 | Moon 16” Stand Fan | 3 | 20000 | 3 | - |
ထြက္လာတဲ႔ result ရဲ့ ဆန္က်င္ဘက္ ေျပာင္းျပန္ကို လိုခ်င္တယ္ ဆိုရင္ေတာ့ NOT ကို တြဲသံုးလို႔ ရပါတယ္။
WHERE balance NOT BETWEEN 2 AND 10
Result:
| ItemID | ItemName | CategoryID | Price | Balance | Description |
| 2 | A4 Tech Keyboard | 1 | 5000 | 1 | - |
| 4 | First Eleven Book | 2 | 500 | 15 | - |
| 5 | SONY 32” TV | 3 | 900000 | 1 | - |
တစ္ခါတစ္ေလ ကြၽန္ေတာ္တို႔ လိုခ်င္တဲ႔ record ေတြက အစီအစဥ္လိုက္မဟုတ္ဘူး ဆိုရင္ေတာ့ condition စစ္တဲ႔အခါ OR ေတြအမ်ားၾကီးသံုးရမယ့္ အေနအထားေတြ ရွိလာနိုင္ပါတယ္။ ဥပမာ ကြၽန္ေတာ္က ItemID 1,3,5 ကိုထုတ္ၾကည့္မယ္ဆိုရင္ OR သံုးျပီးစစ္ရင္ ဒီလိုမ်ိဳးျဖစ္ပါမယ္။
WHERE ItemID = 1 OR ItemID = 3 OR ItemID = 5
ဒီလို အေျခအေနမ်ိဳးမွာ ကြၽန္ေတာ္တို႔ IN ကိုသံုးျပီးေရးရင္ ပိုလြယ္မွာပါ။
WHERE ItemID IN ( 1,3,5 )
Result:
| ItemID | ItemName | CategoryID | Price | Balance | Description |
| 1 | Sony Optical Mouse | 1 | 2500 | 10 | - |
| 3 | ViewSonic 17” Flat CRT | 11 | 15000 | 5 | - |
| 5 | SONY 32” TV | 3 | 900000 | 1 | - |
ItemID 1,3,5 ကလြဲျပီး က်န္တာေတြ ျပမယ္ဆိုရင္ေတာ့
WHERE ItemID NOT IN ( 1,3,5 )
Result:
| ItemID | ItemName | CategoryID | Price | Balance | Description |
| 2 | A4 Tech Keyboard | 1 | 5000 | 1 | - |
| 4 | First Eleven Book | 2 | 500 | 15 | - |
| 6 | Moon 16” Stand Fan | 3 | 20000 | 3 | - |
ဒီေလာက္ဆိုရင္ေတာ့ ကြၽန္ေတာ္တို႔ WHERE Condition ေတာ္ေတာ္ေလးစစ္တက္ျပီလို႔ ေျပာလို႔ရပါျပီ။ အခုေနာက္ထပ္ ORDER BY အေၾကာင္း ဆက္ေျပာပါ့မယ္။ Select Query ကေနထြက္လာတဲ႔ result record ေတြကို sorting လုပ္ခ်င္ရင္ Order By keyword ကိုသံုးရမွာပါ။ အိုေက အခုကြၽန္ေတာ္ Item table ထဲက record ေတြအားလံုးၾကည့္ခ်င္တယ္။ ကုန္လက္က်န္အနည္းဆံုးက အေပၚဆံုးမွာျပခ်င္တယ္ဆိုရင္….
ORDER BY balance
Result:
| ItemID | ItemName | CategoryID | Price | Balance | Description |
| 2 | A4 Tech Keyboard | 1 | 5000> | 1 | - |
| 5 | SONY 32” TV | 3 | 900000 | 1 | - |
| 6 | Moon 16” Stand Fan | 3 | 20000 | 3 | - |
| 3 | ViewSonic 17” Flat CRT | 11 | 15000 | 5 | - |
| 1 | Sony Optical Mouse | 1 | 2500 | 10 | - |
| 4 | First Eleven Book | 2 | 500 | 15 | - |
Order by keyword က default အားျဖင့္ ငယ္စဥ္ၾကီးလိုက္(Ascending) စီေပးပါတယ္။ ၾကီးစဥ္ငယ္လိုက္(Descending) စီခ်င္တယ္ဆိုရင္ေတာ့ ကိုယ္စီခ်င္တဲ႔ column name ေနာက္မွာ DESC ဆိုျပီးထည့္ေပးရပါမယ္။ ဥပမာ ကုန္လက္က်န္အမ်ားဆံုးကို အေပၚဆံုးကေန ျပခ်င္ရင္…
ORDER BY balance DESC
Result:
| ItemID | ItemName | CategoryID | Price | Balance | Description |
| 4 | First Eleven Book | 2 | 500 | 15 | - |
| 1 | Sony Optical Mouse | 1 | 2500 | 10 | - |
| 3 | ViewSonic 17” Flat CRT | 11 | 15000 | 5 | - |
| 6 | Moon 16” Stand Fan | 3 | 20000 | 3 | - |
| 2 | A4 Tech Keyboard | 1 | 5000 | 1 | - |
| 5 | SONY 32” TV | 3 | 900000 | 1 | - |
အခုလို sorting စီတဲ႔ေနရာမွာ Column တစ္ခုထက္ပိုျပီး စီခ်င္ရင္ comer(,) ေလးေတြ ျခားသြားရံုပါပဲ။ ကုန္လက္က်န္ အနည္းဆံုးကို အရင္စီမယ္၊ ကုန္လက္က်န္ အေရအတြက္ခ်င္း တူရင္ ေစ်းႏႈန္းအမ်ားဆံုးကို အေပၚကထားခ်င္တယ္ဆိုရင္….
ORDER BY Balance ASC, Price DESC
(*** ASC ကို ထည့္ေရးေရး၊ မေရးေရး ရပါ၏ ***)
Result:
| ItemID | ItemName | CategoryID | Price | Balance | Description |
| 5 | SONY 32” TV | 3 | 900000 | 1 | - |
| 2 | A4 Tech Keyboard | 1 | 5000 | 1 | - |
| 6 | Moon 16” Stand Fan | 3 | 20000 | 3 | - |
| 3 | ViewSonic 17” Flat CRT | 11 | 15000 | 5 | - |
| 1 | Sony Optical Mouse | 1 | 2500 | 10 | - |
| 4 | First Eleven Book | 2 | 500 | 15 | - |
ဒီေလာက္ဆိုရင္ေတာ့ ကြၽန္ေတာ္တို႔ Simple Select Query ေတြ ေရးတက္ပါျပီ။
