SQL جوائنز چیٹ شیٹ
قابل تلاش، قابل پرنٹ SQL جوائنز حوالہ: inner، left، right، full، اینٹی اور سیمی جوائنز، سیلف جوائنز، ON بمقابلہ WHERE اور LATERAL۔ مفت۔
Basic join types
9SELECT * FROM a INNER JOIN b ON a.id = b.a_id;
SELECT * FROM a LEFT JOIN b ON a.id = b.a_id;
SELECT * FROM a RIGHT JOIN b ON a.id = b.a_id;
SELECT * FROM a FULL OUTER JOIN b ON a.id = b.a_id;
JOIN = INNER JOIN
LEFT OUTER JOIN = LEFT JOIN
LEFT JOIN ... UNION ... RIGHT JOIN ...
ON a.id = b.a_id AND a.type = b.type
ON a.qty BETWEEN p.min_qty AND p.max_qty
Anti-joins (no match)
8LEFT JOIN b ON a.id = b.a_id WHERE b.a_id IS NULL
WHERE NOT EXISTS (SELECT 1 FROM b WHERE b.a_id = a.id)
WHERE a.id NOT IN (SELECT a_id FROM b)
WHERE a.id NOT IN (SELECT a_id FROM b WHERE a_id IS NOT NULL)
RIGHT JOIN a ... WHERE a.id IS NULL
SELECT id FROM a EXCEPT SELECT a_id FROM b;
users without orders = LEFT JOIN + IS NULL
Prefer NOT EXISTS over NOT IN
Semi-joins (has a match)
8WHERE EXISTS (SELECT 1 FROM b WHERE b.a_id = a.id)
WHERE a.id IN (SELECT a_id FROM b)
JOIN b ... GROUP BY a.id
SELECT DISTINCT a.* FROM a JOIN b ON ...
EXISTS stops at the first match
EXISTS (SELECT 1 ...) vs (SELECT * ...)
IN: uncorrelated / EXISTS: correlated
users WITH orders = EXISTS subquery
Self joins
8FROM emp e JOIN emp m ON e.manager_id = m.id
FROM emp e LEFT JOIN emp m ON e.manager_id = m.id
SELECT e.name, m.name AS manager FROM ...
ON a.id < b.id
ON a.id <> b.id
ON b.day = a.day + INTERVAL 1 DAY
ON a.city = b.city AND a.id <> b.id
WITH RECURSIVE tree AS (... UNION ALL ...)
Cross & multi-table joins
8SELECT * FROM sizes CROSS JOIN colors;
FROM sizes, colors
FROM users u JOIN orders o ON ... JOIN items i ON ...
JOIN dates d CROSS JOIN users u LEFT JOIN ...
u LEFT JOIN o ON ... LEFT JOIN i ON i.o_id = o.id
u LEFT JOIN o ... INNER JOIN i ON i.o_id = o.id
FROM a JOIN (b LEFT JOIN c ON ...) ON ...
Written order is logical, not execution order
ON vs WHERE (the gotcha)
8LEFT JOIN b ON a.id = b.a_id AND b.status = 1
LEFT JOIN b ON a.id = b.a_id WHERE b.status = 1
WHERE b.a_id IS NULL OR b.status = 1
LEFT JOIN b ON ... AND a.type = 'x'
WHERE a.type = 'x'
INNER JOIN: ON and WHERE are equivalent
COALESCE(b.total, 0)
COUNT(b.id) vs COUNT(*)
USING, NATURAL & set ops
9JOIN b USING (user_id)
USING outputs ONE shared column
NATURAL JOIN b
Avoid NATURAL JOIN in production
SELECT ... UNION SELECT ...
UNION ALL
JOIN adds columns, UNION adds rows
INTERSECT
UNION needs same column count and types
LATERAL & performance
9CROSS JOIN LATERAL (SELECT ... WHERE b.a_id = a.id LIMIT 3) t
LEFT JOIN LATERAL (...) t ON TRUE
CROSS APPLY / OUTER APPLY
LATERAL sees columns of preceding tables
CREATE INDEX idx ON orders (user_id);
EXPLAIN SELECT ...;
Filter early: join the smallest set first
ON DATE(a.created_at) = b.day
Join on same-type, same-collation columns
کوئی اندراج “:q” سے میل نہیں کھاتا۔
SQL جوائنز چیٹ شیٹ کے بارے میں
یہ SQL جوائنز چیٹ شیٹ ایک کام پوری طرح کرتی ہے: یہ جدولوں کو ملانے کے ہر طریقے کی وضاحت کرتی ہے۔ آٹھ حصے جوائن کی بنیادی اقسام، بغیر میچ والی قطاروں کے لیے اینٹی جوائنز، میچ رکھنے والی قطاروں کے لیے سیمی جوائنز، سیلف جوائنز، کراس اور کئی جدولوں کے جوائنز، ON بمقابلہ WHERE کا کلاسیکی جال، USING، NATURAL اور سیٹ آپریشنز، اور کارکردگی کے نوٹس کے ساتھ LATERAL جوائنز کا احاطہ کرتے ہیں۔
جوائنز وہ جگہ ہیں جہاں SQL کے نتائج خاموشی سے غلط ہو جاتے ہیں: WHERE شق میں فلٹر کیا گیا LEFT JOIN خاموشی سے INNER JOIN بن جاتا ہے، اور NULL کے ساتھ NOT IN کچھ نہیں لوٹاتا۔ ان جالوں کو یہاں اپنی قطاریں ملتی ہیں، ساتھ ہی وہ درست پیٹرن بھی جو اس کی جگہ استعمال کرنا چاہیے۔
اس گروپ کی ہر چیٹ شیٹ کی طرح یہ مفت اور کلائنٹ سائیڈ ہے: سرچ باکس سے قطاروں کو لائیو فلٹر کریں، چپکے رہنے والی فہرست مضامین سے حصوں کے درمیان کودیں، ایک کلک سے کوئی بھی سٹیٹمنٹ کاپی کریں اور اپنی میز پر حوالے کے لیے صفحہ پرنٹ کریں۔
SQL جوائنز چیٹ شیٹ استعمال کرنے کا طریقہ
- شیٹ کھولیں اور حصوں کا جائزہ لیں، Basic join types سے لے کر LATERAL & performance تک۔
- LEFT JOIN، EXISTS یا NOT IN جیسا کوئی کلیدی لفظ تلاش کریں تاکہ ہر قطار لائیو فلٹر ہو جائے۔
- بہت کم قطاریں لوٹانے والے LEFT JOIN کو ڈیبگ کرنے سے پہلے ON vs WHERE کا حصہ پڑھیں۔
- SQL کو اپنی کلپ بورڈ پر کاپی کرنے کے لیے کسی سٹیٹمنٹ یا اس کے کاپی آئیکن پر کلک کریں۔
- مکمل جوائنز حوالے کی کاغذی کاپی کے لیے Print استعمال کریں۔