الانتقال إلى المحتوى الرئيسي
الوحدة 14 · الدرس 1 من 353/57 في الدورة~12 min
دروس الوحدة (1/3)

مقدمة إلى CTEs (مع)

مقدمة إلى CTEs (مع)

عاجلاً أم آجلاً، يحدث ذلك للجميع: تحتاج إلى تصفية البيانات بناءً على نتيجة التجميع، ثم تأخذ هذا الفلتر وتنضم إليه مع استعلام مجمع آخر. تبدأ بكتابة SELECT داخل SELECT، والذي بدوره ينتهي في FROM من SELECT آخر.

النتيجة؟ Spaghetti SQL، استعلام غير قابل للقراءة لأي إنسان.

CTEs (تعبيرات الجدول الشائعة) تتيح لك حل هذه الفوضى. يمكنك تنشيطها باستخدام الكلمة الأساسية WITH، والتي تتيح لك تحديد استعلامات مؤقتة مسماة ثم إعادة استخدامها كـ "جداول افتراضية" في الاستعلام النهائي.

بناء الجملة الأساسي

SQL
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 كما لو كان جدولًا حقيقيًا! وهي أكثر قابلية للقراءة من الارتباط الداخلي الضخم مع الاستعلامات الفرعية المتداخلة.

تمرين#sql.m14.l1.e1
المحاولات: 0جارٍ التحميل…

نريد المنتجات باهظة الثمن. استخدم CTE المسمى "luxury_products" لتحديد "id" و"price" من "products" حيث "price > 500". ثم قم بتشغيل استعلام رئيسي على CTE وإظهار كل شيء (*).

جارٍ تحميل المحرر…
إظهار التلميح

ابدأ بالمنتجات الفاخرة كـ (...) ثم اختر * من المنتجات الفاخرة.

الحل متاح بعد 3 من المحاولات

تمرين#sql.m14.l1.e2
المحاولات: 0جارٍ التحميل…

نريد العثور على المستخدمين الذين يكتبون التعليقات. قم بإنشاء "مراجعين" CTE يستخرج قيم "customer_id" الفريدة (المميزة) من "المراجعات". بعد ذلك، قم باستخراج "المعرف" و"الاسم_الأول" و"اسم_الأخير" من جدول "العملاء" و"انضمامه" إلى "المراجعين" CTE الموجود على المعرف.

جارٍ تحميل المحرر…
إظهار التلميح

مع المراجعين AS (حدد معرف العميل المميز من المراجعات) حدد المعرف والاسم الأول والاسم الأخير من العملاء انضم إلى المراجعين على customer.id = reviewers.customer_id؛

الحل متاح بعد 3 من المحاولات