ایک JOIN دو tables کی rows کو ایک شرط، عموماً foreign key، پر match کر کے جوڑتی ہے۔ join کی type طے کرتی ہے کہ اُن rows کے ساتھ کیا ہوتا ہے جن کا دوسری طرف کوئی match نہیں ہوتا۔
ایک JOIN دو tables کی rows کو ایک شرط، عموماً foreign key، پر match کر کے جوڑتی ہے۔ join کی type طے کرتی ہے کہ اُن rows کے ساتھ کیا ہوتا ہے جن کا دوسری طرف کوئی match نہیں ہوتا۔
NULL واپس آتی ہیں۔-- customers(id, name) orders(id, customer_id, total)
-- INNER: only customers who have at least one order
SELECT c.name, o.total
FROM customers c
INNER JOIN orders o ON o.customer_id = c.id;
-- LEFT: every customer, even those with zero orders (total = NULL)
SELECT c.name, o.total
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id;
-- Classic use: find customers with NO orders
SELECT c.name
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
WHERE o.id IS NULL; -- the LEFT JOIN's NULL side reveals the gap
WHERE میں دائیں table کو filter کرنا (مثلاً WHERE o.total > 100) خاموشی سے LEFT JOIN کو دوبارہ INNER JOIN بنا دیتا ہے، کیونکہ NULL > 100 false ہوتا ہے۔ اگر آپ بغیر match کی rows رکھنا چاہتے ہیں تو ایسی شرائط ON clause میں رکھیں۔زیادہ تر حقیقی queries کئی tables پر پھیلتی ہیں، اور غلط join type خاموشی سے rows گرا یا دُہرا دیتی ہے — ایک ایسا bug جو بظاہر معقول نتائج واپس کرتا ہے۔ یہ جاننا کہ LEFT JOIN + IS NULL "غائب" rows تلاش کرتی ہے، اور یہ کہ null والی طرف پر WHERE LEFT کو منسوخ کر دیتا ہے، reporting کی غلطیوں کی ایک پوری قسم روک دیتا ہے۔
تفصیلی جوابات کے ساتھ IT انٹرویو سوالات کی ایک لائبریری — جونیئر سے سینئر تک۔
عطیہ دیں