MySQL-এ জয়াইনিং ও রিলিভিং তারিখ ব্যবহার করে শর্তসাপেক্ষ ডেটা ফিল্টার করা যায়।
সিনট্যাক্স
SELECT * FROM yourTableName WHERE yourColumnName1 < yourValue1 AND (yourColumnName2 > yourValue2 OR yourColumnName2 IS NULL);
উদাহরণ
কর্মচারী টেবিল তৈরি:
CREATE TABLE demo35 (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
joining_date DATE,
relieving_date DATE
);
ডেটা ইনসার্ট:
INSERT INTO demo35(joining_date, relieving_date) VALUES ('2020-01-10', '2020-07-11');
INSERT INTO demo35(joining_date, relieving_date) VALUES ('2020-05-07', '2020-12-08');
INSERT INTO demo35(joining_date, relieving_date) VALUES ('2020-04-11', '2020-09-18');
INSERT INTO demo35(joining_date, relieving_date) VALUES ('2020-03-12', '2020-10-01');
টেবিলের ডেটা:
+----+--------------+----------------+ | id | joining_date | relieving_date | +----+--------------+----------------+ | 1 | 2020-01-10 | 2020-07-11 | | 2 | 2020-05-07 | 2020-12-08 | | 3 | 2020-04-11 | 2020-09-18 | | 4 | 2020-03-12 | 2020-10-01 | +----+--------------+----------------+
কোয়েরি
জয়াইনিং তারিখ ২০২০-০৫-১১ এর আগে এবং রিলিভিং তারিখ ২০২০-০৮-১০ এর পরে (বা NULL) হলে সিলেক্ট:
SELECT * FROM demo35 WHERE joining_date < '2020-05-11' AND (relieving_date > '2020-08-10' OR relieving_date IS NULL);
আউটপুট
+----+--------------+----------------+ | id | joining_date | relieving_date | +----+--------------+----------------+ | 2 | 2020-05-07 | 2020-12-08 | | 3 | 2020-04-11 | 2020-09-18 | | 4 | 2020-03-12 | 2020-10-01 | +----+--------------+----------------+
ব্যাখ্যা: ১ নম্বর রো বাদ পড়েছে কারণ রিলিভিং তারিখ ২০২০-০৭-১১ যা ২০২০-০৮-১০ এর আগে। বাকি তিনটি রো শর্ত পূরণ করে। IS NULL চেক করা হয়েছে যাতে এখনও কর্মরত কর্মচারীদের (যাদের রিলিভিং তারিখ নেই) ও পাওয়া যায়।