অ্যাডভান্সড 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 Huzaifa Confuse Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Jannat Sadia 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 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 ব্যাবহার করে আমরা তা করতে পারি।
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
Huzaifa Confuse 22456
Huzaifa Confuse 24562
Ahmed Karim 77896
Ahmed Karim 44678

INNER JOIN তখনি সারি(row) ফেরৎ পাঠায় যখন দুটি টেবিলের মধ্যে কমপক্ষে একটা মিল থাকে।যদি Persons table এর সাথে Orders table এর কোন একটা সারির(row) মিল না থাকে সে ক্ষেত্রে সেই সারিটি দেখাবেনা।

                                                   

কোন মন্তব্য নেই

Blogger দ্বারা পরিচালিত.