مرکزی مواد پر جائیں
ماڈیول 3 · سبق 1 از 4کورس میں 9/57~12 min
ماڈیول اسباق (1/4)

دو میزوں میں شامل ہونا: اندرونی شمولیت

اب تک ہم نے ایک وقت میں ایک ٹیبل پڑھا ہے۔ حقیقی دنیا میں، تاہم، ڈیٹا ہے متعدد متعلقہ جدولوں میں پھیلنا: ہمارے ڈیٹاسیٹ میں، مثال کے طور پر، ہر ایک ملازم کے پاس ایک department_id ہے جو departments ٹیبل کی طرف اشارہ کرتا ہے۔ دیکھنا محکمہ کا نام (اور نہ صرف اس کا id) ہمیں اس میں شامل ہونے کی ضرورت ہے دو میزیں. ایسا کرنے والا آپریٹر JOIN کہلاتا ہے۔

بنیادی نحو

SQL
SELECT columns
FROM   table_a
JOIN   table_b ON table_a.x = table_b.y;

انگریزی میں پڑھیں: "take table_a، ہر جوڑا بنا کر table_b کو اس کے ساتھ جوڑیں قطار جہاں table_a.x برابر ہے table_b.y"۔ نتیجہ ایک ** نیا ورچوئل ہے۔ جدول** دونوں کے کالموں کے ساتھ۔

SQL
-- For each employee, also show the name of their department:
SELECT employees.first_name,
       employees.last_name,
       departments.name AS dipartimento
FROM   employees
JOIN   departments ON employees.department_id = departments.id;

ON کے بعد کا حصہ جوائن کنڈیشن کہلاتا ہے: یہ وہی ہے جو بتاتا ہے انجن "یہ دونوں قطاریں ایک ہی چیز کے بارے میں ہیں، انہیں لائن اپ کریں"۔ میں زیادہ تر معاملات میں یہ ایک بنیادی کلید اور غیر ملکی کے درمیان مساوات ہے۔ کلید (یہاں departments.id اور employees.department_id)۔

اندرونی شمولیت، تفصیل سے

مکمل کلیدی لفظ INNER JOIN ہے، لیکن JOIN اپنے طور پر معیاری ہے۔ مترادف "اندر" کا مطلب ہے کہ صرف وہ قطاریں جو دونوں میں مماثل ہوں میزیں واپس آ جاتی ہیں:

  • اگر کسی ملازم کے پاس department_id = NULL ہے، تو وہ میں ظاہر نہیں ہوں گے نتیجہ؛
  • اگر کسی محکمے میں کوئی ملازم نہیں ہے، تو یہ نتیجہ میں ** ظاہر نہیں ہوگا**۔

اہل کالم کے نام

جب دو ٹیبلز میں ایک ہی نام کے کالم ہوں (یہاں دونوں کے پاس id، اور اگر آپ اس کے بارے میں سوچتے ہیں تو دونوں کے پاس name ہے)، آپ کو کون سا ٹیبل بتانا ہوگا ایک کالم table.column لکھ کر آتا ہے۔ لمبے ناموں کو دہرانے سے بچنے کے لیے، عرفی نام اکثر استعمال ہوتے ہیں (آپ نے انہیں ماڈیول 2 میں دیکھا ہے):

SQL
SELECT e.first_name, e.last_name, d.name AS dipartimento
FROM   employees   AS e
JOIN   departments AS d ON e.department_id = d.id;

AS یہاں بھی اختیاری ہے: FROM employees e وہی کام کرتا ہے۔

اسے آزمائیں

ورزش#sql.m3.l1.e1
کوششیں: 0لوڈ ہو رہا ہے…

Ingegneria ڈیپارٹمنٹ میں ہر ملازم کے لیے، پہلا نام (first_name)، آخری نام (last_name) اور محکمہ کا شہر (departments.city) دکھائیں۔ تین کالم، ایک قطار فی ملازم۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

e.department_id اور d.id کے درمیان برابری کے ساتھ آن کی شرط کو مکمل کریں، پھر d.city کو تیسرے کالم کے طور پر منتخب کریں۔

3 کوششوں کے بعد حل دستیاب ہے۔

ورزش کا جائزہ لیں۔

ورزش#sql.m3.l1.e2
کوششیں: 0لوڈ ہو رہا ہے…

میلانو میں واقع محکمہ میں کام کرنے والے تمام ملازمین کا پہلا نام (پہلا_نام) اور آخری نام (آخری_نام) درج کریں۔ Departments.city پر فلٹر کریں، ڈیپارٹمنٹ کے نام پر نہیں۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

پچھلی مشق کی طرح ہی جوائن کریں، لیکن ڈیپارٹمنٹ کے نام کی بجائے d.city = 'Milano' پر فلٹر کریں۔

3 کوششوں کے بعد حل دستیاب ہے۔