একটি CTE (Common Table Expression) WITH দিয়ে একটি সাময়িক ফলাফল সেটকে নাম দেয়, যা জটিল কোয়েরি একই স্টেটমেন্টের মধ্যে পড়া আর আবার ব্যবহার করা সহজ করে তোলে।
একটি নামযুক্ত, সাময়িক ফলাফল সেট সংজ্ঞায়িত করে যা মূল কোয়েরি একটি টেবিলের মতো রেফারেন্স করতে পারে।
WITH cte_name AS (
SELECT ...
)
SELECT * FROM cte_name;WITH DeptAvg AS (
SELECT department, AVG(salary) AS avg_salary
FROM Employee
GROUP BY department
)
SELECT * FROM DeptAvg
WHERE avg_salary > 60000;সাধারণ ভুল
একটি সাধারণ সাবকোয়েরি ঠিক একইভাবে কাজ করত এমন জায়গায় শুধু স্টাইলের জন্য একটি CTE ব্যবহার করা।
একটি CTE যা নিজেকেই রেফারেন্স করে, ক্রমসোপান বা গ্রাফ-সদৃশ তথ্য ঘুরে দেখতে ব্যবহৃত হয়।
WITH RECURSIVE cte_name AS (
base_case
UNION ALL
recursive_case
)
SELECT * FROM cte_name;WITH RECURSIVE OrgChart AS (
SELECT id, name, manager_id FROM Employee WHERE manager_id IS NULL
UNION ALL
SELECT e.id, e.name, e.manager_id
FROM Employee e
JOIN OrgChart o ON e.manager_id = o.id
)
SELECT * FROM OrgChart;সাধারণ ভুল
কোনো সমাপ্তি শর্ত ছাড়া একটি রিকার্সিভ কেস লেখা, যা একটি অসীম লুপ তৈরি করে।
এই অংশের "অগ্রসর" কোয়েরি কৌশলগুলোর মধ্যে CTE শেষটি। শেষ পাঠে আমরা দৈনন্দিন কোয়েরি করা সম্পূর্ণভাবে পেরিয়ে যাব, শিক্ষানবিশ ট্র্যাকের বাইরের টুলে: ভিউ, ইনডেক্স, স্টোরড প্রসিডিউর, ট্রিগার, আর একটি কোয়েরি আসলেই দ্রুত কি না তা কীভাবে যাচাই করবেন।