دروس الوحدة (1/3)
مقدمة إلى CTEs (مع)
مقدمة إلى CTEs (مع)
عاجلاً أم آجلاً، يحدث ذلك للجميع: تحتاج إلى تصفية البيانات بناءً على نتيجة التجميع، ثم تأخذ هذا الفلتر وتنضم إليه مع استعلام مجمع آخر. تبدأ بكتابة SELECT داخل SELECT، والذي بدوره ينتهي في FROM من SELECT آخر.
النتيجة؟ Spaghetti SQL، استعلام غير قابل للقراءة لأي إنسان.
CTEs (تعبيرات الجدول الشائعة) تتيح لك حل هذه الفوضى. يمكنك تنشيطها باستخدام الكلمة الأساسية WITH، والتي تتيح لك تحديد استعلامات مؤقتة مسماة ثم إعادة استخدامها كـ "جداول افتراضية" في الاستعلام النهائي.
بناء الجملة الأساسي
WITH premium_customers AS (
SELECT customer_id, SUM(total_amount) AS total_spent
FROM orders
GROUP BY customer_id
HAVING SUM(total_amount) > 1000
)
SELECT customers.first_name, premium_customers.total_spent
FROM customers
JOIN premium_customers ON customers.id = premium_customers.customer_id;كما ترون، يقرأ الاستعلام الرئيسي في الأسفل من premium_customers كما لو كان جدولًا حقيقيًا! وهي أكثر قابلية للقراءة من الارتباط الداخلي الضخم مع الاستعلامات الفرعية المتداخلة.
نريد المنتجات باهظة الثمن. استخدم CTE المسمى "luxury_products" لتحديد "id" و"price" من "products" حيث "price > 500". ثم قم بتشغيل استعلام رئيسي على CTE وإظهار كل شيء (*).
إظهار التلميح
ابدأ بالمنتجات الفاخرة كـ (...) ثم اختر * من المنتجات الفاخرة.
الحل متاح بعد 3 من المحاولات
نريد العثور على المستخدمين الذين يكتبون التعليقات. قم بإنشاء "مراجعين" CTE يستخرج قيم "customer_id" الفريدة (المميزة) من "المراجعات". بعد ذلك، قم باستخراج "المعرف" و"الاسم_الأول" و"اسم_الأخير" من جدول "العملاء" و"انضمامه" إلى "المراجعين" CTE الموجود على المعرف.
إظهار التلميح
مع المراجعين AS (حدد معرف العميل المميز من المراجعات) حدد المعرف والاسم الأول والاسم الأخير من العملاء انضم إلى المراجعين على customer.id = reviewers.customer_id؛
الحل متاح بعد 3 من المحاولات