ماڈیول اسباق (1/4)
دو میزوں میں شامل ہونا: اندرونی شمولیت
اب تک ہم نے ایک وقت میں ایک ٹیبل پڑھا ہے۔ حقیقی دنیا میں، تاہم، ڈیٹا ہے
متعدد متعلقہ جدولوں میں پھیلنا: ہمارے ڈیٹاسیٹ میں، مثال کے طور پر، ہر ایک
ملازم کے پاس ایک department_id ہے جو departments ٹیبل کی طرف اشارہ کرتا ہے۔ دیکھنا
محکمہ کا نام (اور نہ صرف اس کا id) ہمیں اس میں شامل ہونے کی ضرورت ہے
دو میزیں. ایسا کرنے والا آپریٹر JOIN کہلاتا ہے۔
بنیادی نحو
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"۔ نتیجہ ایک ** نیا ورچوئل ہے۔
جدول** دونوں کے کالموں کے ساتھ۔
-- 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 میں دیکھا ہے):
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 وہی کام کرتا ہے۔
اسے آزمائیں
Ingegneria ڈیپارٹمنٹ میں ہر ملازم کے لیے، پہلا نام (first_name)، آخری نام (last_name) اور محکمہ کا شہر (departments.city) دکھائیں۔ تین کالم، ایک قطار فی ملازم۔
اشارہ دکھائیں۔
e.department_id اور d.id کے درمیان برابری کے ساتھ آن کی شرط کو مکمل کریں، پھر d.city کو تیسرے کالم کے طور پر منتخب کریں۔
3 کوششوں کے بعد حل دستیاب ہے۔
ورزش کا جائزہ لیں۔
میلانو میں واقع محکمہ میں کام کرنے والے تمام ملازمین کا پہلا نام (پہلا_نام) اور آخری نام (آخری_نام) درج کریں۔ Departments.city پر فلٹر کریں، ڈیپارٹمنٹ کے نام پر نہیں۔
اشارہ دکھائیں۔
پچھلی مشق کی طرح ہی جوائن کریں، لیکن ڈیپارٹمنٹ کے نام کی بجائے d.city = 'Milano' پر فلٹر کریں۔
3 کوششوں کے بعد حل دستیاب ہے۔