Sunday, December 25, 2011 Posted by Coder Example 0 comments » Posted in

অ্যাডভান্সড 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

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

0 comments:

Post a Comment