| الداخلية والخارجية |
|---|
| الصفوف التي يتحقق فيها شرط 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; |