অ্যাডভান্সড QUERY (SQL Join Tutorial in Bangla)
অ্যাডভান্সড QUERY শেখা
এতক্ষন শিখলাম যে কিভাবে ডেটা SELECT statement দিয়ে একটা টেবিল থেকে ডেটা তুলে এনে দেখা যায়।কিন্তু ডেটাবেসের বাস্তব প্রোগ্রামিং এর ক্ষেত্রে আসলে আমরা শুধু কোন একটা ডেটাবেসের একটা টেবিল থেকে ডেটা দেখিনা কারন একটা টেবিল অনেকগুলি ছোট ছোট টেবিলে বিভক্ত থাকে।তাই আপনি SELECT statement এর সাথে SQL JOIN করে সম্পূর্ন ডেটা দেখতে পারেন।এর গঠনটি নিম্নরুপ
JOIN keyword টি SQL statement এর সাথে ব্যাবহৃত হয় দুই বা ততোধিক টেবিল থেকে ডেটা কোয়েরি করার জন্য যেটা ওই টেবিলগুলির মধ্যে নির্দিষ্ট কয়েকটা কলামের মধ্যেকার সম্পর্কের উপর ভিত্তি করে হয়।টেবিলগুলি ডেটাবেসের মধ্যে একটি আরেকটির সাথে Keys(এগুলোকে Foreign key বলে) এর মাধ্যমে সম্পর্কযুক্ত থাকে।
Primary Key হচ্ছে একটা কলাম(বা কিছু কলামের সমষ্টি)যার মান প্রতিটি সারির(row)জন্য অনন্য(unique).নিচের “Persons”টেবিলটি দেখুন
| P_Id | LastName | FirstName | Address | City |
| 1 | Huzaifa | Confuse | Timoteivn 10 | Sandnes |
| 2 | Svendson | Tove | Borgvn 23 | Sandnes |
| 3 | Jannat | Sadia | Storgt 20 | Stavanger |
| O_Id | OrderNo | P_Id |
| 1 | 77895 | 3 |
| 2 | 44678 | 3 |
| 3 | 22456 | 1 |
| 4 | 24562 | 1 |
| 5 | 34764 | 15 |
উদাহরনের আগে কয়েক ধরনের JOIN আছে তা একটু দেখি
JOIN,LEFT JOIN,RIGHT JOIN,FULL JOIN
SQL INNER JOIN
INNER JOIN সকল টেবিল থেকেই ডেটা তুলে আনে আমরা যে শর্ত দেব তার উপর ভিত্তি করে।যেমনউদাহরন:
Persons table
| P_Id | LastName | FirstName | Address | City |
| 1 | Huzaifa | Ola | Timoteivn 10 | Sandnes |
| 2 | Svendson | Tove | Borgvn 23 | Sandnes |
| 3 | Jannat | Sadia | Storgt 20 | Stavanger |
Orders table
| O_Id | OrderNo | P_Id |
| 1 | 77895 | 3 |
| 2 | 44678 | 3 |
| 3 | 22456 | 1 |
| 4 | 24562 | 1 |
| 5 | 34764 | 15 |
“P_Id”দিয়ে টেবিলদুটি সম্পর্কযুক্ত এখান থেকে যদি সব ব্যাক্তিদের তালিকা দেখতে চাই তাদেন order যাই হোকনা কেন তাহলে INNER JOIN ব্যাবহার করে আমরা তা করতে পারি।
Result হবে এমন
| LastName | FirstName | OrderNo |
| Huzaifa | Confuse | 22456 |
| Huzaifa | Confuse | 24562 |
| Ahmed | Karim | 77896 |
| Ahmed | Karim | 44678 |
INNER JOIN তখনি সারি(row) ফেরৎ পাঠায় যখন দুটি টেবিলের মধ্যে কমপক্ষে একটা মিল থাকে।যদি Persons table এর সাথে Orders table এর কোন একটা সারির(row) মিল না থাকে সে ক্ষেত্রে সেই সারিটি দেখাবেনা।
Post a Comment