কম্পিউটার টিউটোরিয়াল

MySQL-এ রিকারসিভ (Recursive) SELECT কোয়েরি করা

রিকারসিভ SELECT-এর জন্য উদাহরণ দেখি। প্রথমে একটি টেবিল তৈরি করব। CREATE কমান্ড ব্যবহার করে টেবিল তৈরি করা হয়।

mysql> CREATE table tblSelectDemo
-> (
-> id int,
-> name varchar(100)
-> );
Query OK, 0 rows affected (0.61 sec)

"tblSelectDemo" টেবিলে রেকর্ড ইনসার্ট করুন:

mysql> insert into tblSelectDemo values(1,'John');
Query OK, 1 row affected (0.10 sec)
mysql> insert into tblSelectDemo values(2,'Carol');
Query OK, 1 row affected (0.09 sec)
mysql> insert into tblSelectDemo values(3,'Smith');
Query OK, 1 row affected (0.17 sec)
mysql> insert into tblSelectDemo values(4,'David');
Query OK, 1 row affected (0.15 sec)
mysql> insert into tblSelectDemo values(5,'Bob');
Query OK, 1 row affected (0.18 sec)

সকল রেকর্ড দেখুন:

mysql> SELECT *from tblSelectDemo;

আউটপুট:

+------+-------+
| id   | name  |
+------+-------+
| 1    | John  |
| 2    | Carol |
| 3    | Smith |
| 4    | David |
| 5    | Bob   |
+------+-------+
5 rows in set (0.00 sec)

রিকারসিভ SELECT সিনট্যাক্স (সেশন ভেরিয়েবল ব্যবহার করে)

mysql> SELECT var1.id as id, @sessionName:= var1.Name as NameofStudent
-> FROM (SELECT * FROM tblSelectDemo ORDER BY id DESC) var1
-> JOIN (SELECT @sessionName:= 4) tmp
-> WHERE var1.id = @sessionName;

আউটপুট:

+------+----------------+
| id   | NameofStudent  |
+------+----------------+
| 4    | David          |
+------+----------------+
1 row in set (0.00 sec)

আধুনিক পদ্ধতি (MySQL 8.0+): WITH RECURSIVE cte AS (SELECT ... UNION ALL SELECT ... FROM cte JOIN ...) SELECT * FROM cte; ব্যবহার করে আসল রিকারসিভ CTE (Common Table Expression) লিখা যায়। Hierarchical ডেটা (যেমন: সাংগঠনিক চার্ট, বিল অফ মেটেরিয়ালস) কোয়েরি করার জন্য এটি মানক পদ্ধতি।

  1. MySQL-এ প্রথম ১০টি রেকর্ড নির্বাচন করার ক্যোয়ারি

  2. MySQL SELECT কোয়ারিতে এলিয়াস (alias) ব্যবহার করার পদ্ধতি

  3. MySQL-এ ORDER BY Amount=0, Amount দিয়ে শূন্য মানগুলো শেষে পাঠানো

  4. MySQL-এ মাস অনুযায়ী রেকর্ড সিলেক্ট করা (MONTH() ফাংশন)