الدرس الثاني عشر: استعلامات SQL المتقدمة (Advanced SQL Queries)
في الدرس ده، هنتعلم إزاي نستخدم استعلامات SQL المتقدمة، واللي بتساعدنا نعمل عمليات معقدة على البيانات. هنتناول موضوعات زي الانضمام بين الجداول (JOINs)، المجموعات (GROUP BY)، والفلاتر المتقدمة.
الانضمام بين الجداول (JOINs)
الـJOINs بتساعدنا نربط بين بيانات موجودة في جداول مختلفة. فيه أنواع مختلفة من الـJOINs، لكن هنا هنتناول الأنواع الأساسية:
INNER JOIN
الـINNER JOIN بيربط بين صفوف من جدولين أو أكثر بناءً على شرط معين. فقط الصفوف اللي تتطابق فيها الشروط هي اللي بتظهر.
مثال: استخدام INNER JOIN
SELECT users.username, orders.order_id FROM users INNER JOIN orders ON users.id = orders.user_id;
في المثال ده، بنسترجع أسماء المستخدمين ومعرفات الطلبات من جدولين users
وorders
.
LEFT JOIN
الـLEFT JOIN بيرجع كل الصفوف من الجدول الأيسر، والصفوف المتطابقة من الجدول الأيمن. لو مفيش تطابق، هتظهر القيم الفارغة.
مثال: استخدام LEFT JOIN
SELECT users.username, orders.order_id FROM users LEFT JOIN orders ON users.id = orders.user_id;
في المثال ده، بنسترجع أسماء المستخدمين ومعرفات الطلبات. حتى لو المستخدم ملوش طلبات، هيظهر اسمه.
استخدام GROUP BY
الأمر GROUP BY
بيستخدم لتجميع البيانات بناءً على عمود معين. ده مفيد لما نحتاج نعمل عمليات إحصائية زي العد أو المتوسط.
مثال: استخدام GROUP BY مع COUNT
SELECT user_id, COUNT(*) as order_count FROM orders GROUP BY user_id;
في المثال ده، بنعد الطلبات لكل مستخدم باستخدام COUNT
ونجمع النتائج بناءً على user_id
.
الفلاتر المتقدمة باستخدام HAVING
بعد استخدام GROUP BY
، ممكن نستخدم HAVING
لتصفية النتائج بناءً على شروط معينة.
مثال: استخدام HAVING لتصفية النتائج
SELECT user_id, COUNT(*) as order_count FROM orders GROUP BY user_id HAVING COUNT(*) > 5;
في المثال ده، بنسترجع المستخدمين اللي عندهم أكثر من 5 طلبات.
الملخص
- اتعلمنا عن الـJOINs وكيفية ربط الجداول المختلفة.
- استعرضنا استخدام
INNER JOIN
وLEFT JOIN
. - اتعرفنا على استخدام
GROUP BY
وHAVING
لتجميع وتصفية البيانات.
في الدرس الجاي، هنتناول كيفية التعامل مع البيانات باستخدام الدوال (Functions) في SQL.