Hierarchical Query in Oracle

ধরে নিচ্ছি আমরা অলরেডি Oracle সম্পর্কে জানি এবং ওরাকল নিয়ে কাজ করেছি। আমরা সাধারণত Oracle এর কিছু Query

যেমন select,update,insert,update,delete এই ধরনের Query সম্পর্কে সম্পর্কে জানি এবং কাজ করি।

শুরু করা যাক Relational Query দিয়েঃ

এই ধরনের Query তে সাধারণত ২ বা তার বেশী Table এ Relation করে Query লেখা হয়।যেমনঃ

employee table:

employee_id name Address position_id
1 Mr. A Dhaka 1
2 Mr. B Dhaka 2

Position Table

position_id position name
1 Manager
2 Executive

এখানে employee table এর position_id এবং Position Table এর position_id দিয়ে Relation করলেই আমরা পজিশনের নাম পেয়ে যাব।

এই ধরনের Relation এ আমরা অভ্যস্ত।

এবার আরেকধরণের রিলেশন এ আসা যাক যেখানে Table একটা এবং Relation টা একই টেবিলের আরেকটা column।

যেমনঃ

employee_id name Address position_id team_leader_id
1 Mr. A Dhaka 1
2 Mr. B Dhaka 2 1

এখানে team_leader_id হচ্ছে এই Table এর employee_id।তার মানে Mr. B এর team leader হচ্ছে Mr. A।

এই রিলেশন অনেকটা আগের মতই শুধুমাত্র Sub Query দিয়ে আমরা রিলেশন করতে পারি।

এখন আসা যাক আমার topics a। যেখানে Table  Structure আগেরটার মতই কিন্তু ডাটার পরিবর্তন আছে যেখানে প্রত্যেকটা Row তার আগের কোন Row এর সাথে Related । যেমনঃ

Table user_information

user_id user_name referrer_id
1 A NULL
2 B 1
3 C 2
4 D 3
5 E 4
5 E 1

এখানে 1st row ছাড়া প্রত্যেকটা row এর hierarchy আছে। user id 2 এর referrer_id হচ্ছে user_id 1 ,user id 3 এর referrer_id হচ্ছে user_id 2 এবং এইভাবেই চলতে থাকবে। অর্থাৎ এখানে যদি user_id 1 কাউকে রেফার না করত তাহলে row বাড়ত না। মানে  এই Table এ insert করার জন্য referrer_id অবশযই লাগবে।

এই ধরনের রিলেশনও উপরের মত Sub Query দিয়ে ট্যাকনিক অ্যাপ্লাই করে করা যায়। কিন্তু তার প্রয়োজন ওরাকলে নেই। ওরাকলে এর জন্য আছে Hierarchical Query ।

যদি আমি দেখতে চাই যে member_id 1 এর রেফারেন্স-এ কতটি row আছে তাহলে নিচের Query apply করলেই পেয়ে যাব আমরাঃ

select * from user_information connect by prior user_id=referrer_id start with referrer_id=1;

এই Query এর নতুনত্ব হল connect by prior এবং start with যেখানে connect by prior নির্দেশ করে Hierarchy কিভাবে related এবং start with নির্দেশ করে Hierarchy এর শুরু হবে কোথা থেকে।

পরবর্তী পোস্ট এই সম্পর্কে আরো ডিটেল আলোচনা করব।

ইনশাল্লাহ।

 

Comments (No)

Leave a Reply

এই সাইটের কোন লেখা কপি করা সম্পুর্ন নিষেধ