অ্যাডভান্সড QUERY (SQL Join Tutorial in Bangla)
অ্যাডভান্সড QUERY শেখা
এতক্ষন শিখলাম যে কিভাবে ডেটা SELECT statement দিয়ে একটা টেবিল থেকে ডেটা তুলে এনে দেখা যায়।কিন্তু ডেটাবেসের বাস্তব প্রোগ্রামিং এর ক্ষেত্রে আসলে আমরা শুধু কোন একটা ডেটাবেসের একটা টেবিল থেকে ডেটা দেখিনা কারন একটা টেবিল অনেকগুলি ছোট ছোট টেবিলে বিভক্ত থাকে।তাই আপনি SELECT statement এর সাথে SQL JOIN করে সম্পূর্ন ডেটা দেখতে পারেন।
এর গঠনটি নিম্নরুপ
1.SELECT
column_list
2.FROM
table_1
3.[INNER
|LEFT
|RIGHT] table_2
ON
conditions_2
4.[INNER
|LEFT
|RIGHT] table_3
ON
conditions_3
5.…
6.WHERE
conditions
JOIN keyword টি SQL statement এর সাথে ব্যাবহৃত হয় দুই বা ততোধিক টেবিল থেকে ডেটা কোয়েরি করার জন্য যেটা ওই টেবিলগুলির মধ্যে নির্দিষ্ট কয়েকটা কলামের মধ্যেকার সম্পর্কের উপর ভিত্তি করে হয়।টেবিলগুলি ডেটাবেসের মধ্যে একটি আরেকটির সাথে Keys(এগুলোকে Foreign key বলে) এর মাধ্যমে সম্পর্কযুক্ত থাকে।
Primary Key হচ্ছে একটা কলাম(বা কিছু কলামের সমষ্টি)যার মান প্রতিটি সারির(row)জন্য অনন্য(unique).নিচের “Persons”টেবিলটি দেখুন
P_Id | LastName | FirstName | Address | City |
1 | Hansen | Ola | Timoteivn 10 | Sandnes |
2 | Svendson | Tove | Borgvn 23 | Sandnes |
3 | Pettersen | Kari | Storgt 20 | Stavanger |
এখানে “Persons” টেবিলের প্রাইমারি কি হচ্ছে “P_Id”এটার মানে হচ্ছে দুটি সারির(row) “P_Id”কখনও একই হবেনা।এই “P_Id”ই দুটি row কে আলাদা করবে যদিও দুটি row এর নাম একই হয়।এবার পরের টেবিলটি দেখুন
O_Id | OrderNo | P_Id |
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 1 |
4 | 24562 | 1 |
5 | 34764 | 15 |
লক্ষ্য করুন “O_Id”কলামটি “Orders”টেবিলের Primary Key এবং এখানে “P_Id” দিয়ে “Persons” টেবিলের ব্যাক্তিদের প্রদর্শন করা হয়েছে তাদের নাম না লিখেই।এই টেবিল দুটির মধ্যে “P_Id”কলামটির মাধ্যমে একটি সম্পর্ক আছে।
উদাহরনের আগে কয়েক ধরনের JOIN আছে তা একটু দেখি
JOIN,LEFT JOIN,RIGHT JOIN,FULL JOIN
SQL INNER JOIN
INNER JOIN সকল টেবিল থেকেই ডেটা তুলে আনে আমরা যে শর্ত দেব তার উপর ভিত্তি করে।যেমন
1.SELECT
column_name(s)
2.FROM
table_name1
3.INNER
JOIN
table_name2
4.ON
table_name1.column_name=
5.table_name2.column_name
উদাহরন:
Persons table
P_Id | LastName | FirstName | Address | City |
1 | Hansen | Ola | Timoteivn 10 | Sandnes |
2 | Svendson | Tove | Borgvn 23 | Sandnes |
3 | Pettersen | Kari | 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 ব্যাবহার করে আমরা তা করতে পারি।
1.SELECT
Persons.LastName,Persons.
2.FirstName,Orders.OrderNo
3.From
Persons
4.INNER
JOIN
Orders
5.ON
Persons.P_Id=Orders.P_Id
6.Order
BY
Persons.LastName
Result হবে এমন
LastName | FirstName | OrderNo |
Hansen | Ola | 22456 |
Hansen | Ola | 24562 |
Pettersen | Kari | 77896 |
Pettersen | Kari | 44678 |
0 comments:
Post a Comment