Joining Tables ضم الجداول وإستخراج مناظر views منها الهدف : 1- استخراج المعلومات من جدولين أو اكثر بالإستفادة من الرابط بينهما وبإستخدام SQL 2- شروط قواعد ضم الجدول 3- تمرين الموضوع : تحتاج في كثير من الاحيان إلي استرجاع بيانات مخزنة في جدولين أو اكثر بإستفسار واحد.
Joining Tables ضم الجداول وإستخراج مناظر views منها مثال :- من مثال الشركة نريد الحصول علي تقرير به رقم الموظف واسم الموظف واسم القسم الذي يعمل به وذلك لكل الموظفين المسجلين Q 18 :- Select SSN, Fname , Lname , Dname From Employee, Department Where DNO = Dnumber; Department Employee
تضم جملة Select السابقة الأعمدة من جدول الموظفين Employee وجدول الاقسام Department بإستخدام العمود المشترك الرابط بين الجدولين و Dnumber في جدول الاقسام ويقيد الشرط المذكور بعد Where أنه سيتم إختيار فقط الأسطر التي يتطابق فيها الشرط في الجدولين.
O / p of Q 18 SSN Fname Lname Dname 123456789 John Smith Research 333445555 Franklin Wong 999887777 Alicia Zelaya administration 987654321 Jennifer Wallace 666884444 Ramesh Narayan 453453453 Joyce English 987987987 Ahmad Jabbar 888665555 James Borg Headquarters
Q 19 :- Select SSN, Fname , Lname , Dname From Employee, Department Where DNO = Dnumber AND Dname =‘administration’; O / p of Q 19 SSN Fname Lname Dname 999887777 Alicia Zelaya administration 987654321 Jennifer Wallace 987987987 Ahmad Jabbar
استخدامات ضم الجداول : للحصول علي بيانات من حقول سجلات الجدولين وضمها معاً مثل المثال السابق . الحصول علي بيانات موجودة بجدول واحد إعتماداً علي شرط يطبق علي عمود بالجدول الأخر مثل المثال التالي 20 Q
من مثال الشركة اكتب جملة Select للحصول علي أسماء الموظفين الذين يعملون بمشاريع Q 20 :- Select Distinct (Fname , Lname ) From Employee, Worksـــ on Where SSN = ESSN; O / p of Q 20 Fname Lname John Smith Franklin Wong Alicia Zelaya Jennifer Wallace Ramesh Narayan Joyce English Ahmad Jabbar James Borg ملحوظة نلاحظ في الامثلة السابقة ان العمود في أحد جدولي الربط يمثل مفتاح رئيسي PK بينما العمود في الجدول الاخر يمثل مفتاح أجنبي Foreign key
Department.sex Employee.sex قواعد ضم الجدول لا يزيد عدد الجداول في جملة Select الواحدة نظرياً عن 15 جدول ولكن عملياً تشير وثائق IBM إلي استخدام سبعة جداول كحد اقصي وبصورة عملية اكثر يوصي بعدم إستخدام اكثر من أربعة جداول في جملة Select الواحدة وخاصة مع الجداول ذات الحجم المتوسط أو الكبير (من 10.000 إلي 100.000 سجل لكل جدول ). في حالة إستخدام عمودين لهما نفس الإسم وهما من جدولين مختلفين يتم إستخدام إسم الجدول مع إسم العمود للتمميز بينهما مثل : Department.sex Employee.sex 3. يجب أن يكون نوع حقول الأعمدة المستخدمة لربط الجداول من نفس النوع (حروف أو أعداد صحيحة أو اعداد حقيقية.....(
where SSN=ESSN and hours>20.0; 4. القيم Null الموجودة في الأعمدة بالجدولين لا تتحقق شرط الضم أبداً 5. عادة يتم شرط الضم بأستخدام العامل (=) ولكن من الممكن إستخدام عوامل أخري مثل (>، <،...........) لتحقيق شرط الضم 6. يمكن للشروط التي بعد كلمة Where أن تشمل علي عدة شروط أخري بالإضافة إلي شرط الضم مثل : where SSN=ESSN and hours>20.0;
مثال 1 : يوضح المثال السابق إستخدام الربط بين جدولين بدون إستخدام شروط إضافية ويكون الشكل العام لجملة Select هو : Select <colm1,colum2,……..> From <table1,table2,……….> Where <Join condition> ; راجع :- Q 18 Q 21 :- ضم جدول Employee وجدول Department من خلال قيم DNO وإظهار كل أعمدة وسجلات الجدولين.
Q 21 :- Select * From Employee, Department Where DNO = Dnumber;
O / p of Q 21 Employee DNO Super SSN salary SEX ADDRESS BDATE Lname Employee DNO Super SSN salary SEX ADDRESS BDATE Lname MINIT Fname SSN 5 333445555 30000 M 731 fondren,Houton,tx 1965-01-09 Smith B John 123456789 888665555 40000 638 voss,houstong,tx 1955-12-08 Wong T Franklin 4 987654321 25000 F 3321 castle,spring,tx 1968-01-19 Zelaya J Alicia 999887777 43000 291 berry,bellair,tx 1941-06-20 Wallace S Jennifer 38000 975 fire oak,humble,tx 1962-09-15 Narayan K Ramesh 666884444 5631 rice,Houston,tx 1972-07-31 English A Joyce 453453453 980 Dallas,Houston,tx 1969-03-29 Jabbar V Ahmad 987987987 1 Null 55000 450 Stone,Houston,tx 1937-11-10 Borg E James Department MGRSTARTDATE MGRSSN DNUMBER DNAME 1988-05-22 333445555 5 Research 1995-01-01 987654321 4 Administration 1981-06-19 888665555 1 Headquarters
Q 22 :- ضم جدول Employee وجدول Department من خلال قيم DNO وإظهار كل أعمدة وسجلات الجدولين مع ترتيب الجدول الناتج طبقاً لرقم الموظف. Select * From Employee, Department Where DNO = Dnumber Order by SSN;
O / p of Q 22 Employee DNO Super SSN salary SEX ADDRESS BDATE Lname Employee DNO Super SSN salary SEX ADDRESS BDATE Lname MINIT Fname SSN 5 333445555 30000 M 731 fondren,Houton,tx 1965-01-09 Smith B John 123456789 888665555 40000 638 voss,houstong,tx 1955-12-08 Wong T Franklin 4 987654321 25000 F 3321 castle,spring,tx 1968-01-19 Zelaya J Alicia 999887777 43000 291 berry,bellair,tx 1941-06-20 Wallace S Jennifer 38000 975 fire oak,humble,tx 1962-09-15 Narayan K Ramesh 666884444 5631 rice,Houston,tx 1972-07-31 English A Joyce 453453453 980 Dallas,Houston,tx 1969-03-29 Jabbar V Ahmad 987987987 1 Null 55000 450 Stone,Houston,tx 1937-11-10 Borg E James Department MGRSTARTDATE MGRSSN DNUMBER DNAME 1988-05-22 333445555 5 Research 1995-01-01 987654321 4 Administration 1981-06-19 888665555 1 Headquarters
Q 23 :- يتضمن هذا المثال إضافة شرط أخر مع شرط ربط الجداول اكتب جملة Select لإستخراج كافة المعلومات بجدول الموظف مع كافة معلومات من يعول للموظف رقم ”666884444“ الحل :- Select Employee.* , Department.* From Employee, Department Where SSN = ESSN and SSN =‘666884444’ Order by SSN;
O / p of Q 23
Q 24 :- هل يمكنك إستخراج رقم واسم الموظفين اللذين ليس لهم معولين Dependent ؟ اكتب جملة Select تفعل ذلك. Select SSN, Fname , Lname From Employee, Dependent Where
O / p of Q 24