Skip to content

وصلات SQL مشروحة

مقارنة أنواع JOIN في SQL: inner وouter وcross وself وlateral وnatural — ماذا يُرجع كل نوع، مع مثال من سطر واحد.

الوصلات تجمع صفوفاً من جدولين عبر مفتاح مشترك. ونوع الوصلة يحدد أي الصفوف تبقى عندما تتطابق المفاتيح أو تغيب أو تتكرر.

جدول مرجعي · 8 إدخالات
8 of 8 rows
الداخلية والخارجية
الصفوف التي يتحقق فيها شرط ON في الجدولين فقط. تُهمل الصفوف غير المتطابقة في أيٍّ من الجانبين.SELECT u.name, o.total FROM users u INNER JOIN orders o ON u.id = o.user_id;
جميع صفوف الجدول الأيسر. تكون أعمدة الجدول الأيمن NULL حيث لا يوجد تطابق.SELECT u.name, o.total FROM users u LEFT OUTER JOIN orders o ON u.id = o.user_id;
جميع صفوف الجدول الأيمن. تكون أعمدة الجدول الأيسر NULL حيث لا يوجد تطابق.SELECT u.name, o.total FROM users u RIGHT OUTER JOIN orders o ON u.id = o.user_id;
جميع صفوف الجدولين. تُملأ الجوانب غير المتطابقة بقيم NULL.SELECT u.name, o.total FROM users u FULL OUTER JOIN orders o ON u.id = o.user_id;
التقاطعية والذاتية
جداء ديكارتي. كل صف أيسر يقترن بكل صف أيمن. بدون شرط ON.SELECT u.name, o.total FROM users u CROSS JOIN orders o;
جدول موصول بنفسه عبر الأسماء المستعارة. يقارن الصفوف داخل جدول واحد.SELECT a.id AS o1, b.id AS o2 FROM orders a JOIN orders b ON a.user_id = b.user_id WHERE a.id < b.id;
متقدمة
استعلام فرعي في FROM يُقيَّم لكل صف خارجي. يمكن للاستعلام الفرعي الإشارة إلى أعمدة الجدول الخارجي.SELECT u.name, o.total FROM users u, LATERAL (SELECT total FROM orders WHERE user_id = u.id LIMIT 1) o;
يصل عبر الأعمدة المتشابهة في الاسم. بدون شرط ON. احذر من تصادمات المفاتيح غير المقصودة.SELECT u.name, o.total FROM users u NATURAL JOIN orders o;