1 / 18

الربط بين الجداول

الربط بين الجداول. الربط بين الجداول. حتى يمكننا الاستعلام عن بيانات موجودة في أكثر من جدول فإنه يمكننا استرجاعها باستخدام ” join “ وذلك للربط بين الجداول لاسترجاع البيانات. هناك 3 أنواع من الربط يمكننا استخدامها للربط بين الجداول: الربط التقاطعي ” Cross join “.

makaio
Download Presentation

الربط بين الجداول

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. الربط بين الجداول

  2. الربط بين الجداول حتى يمكننا الاستعلام عن بيانات موجودة في أكثر من جدول فإنه يمكننا استرجاعها باستخدام ”join“ وذلك للربط بين الجداول لاسترجاع البيانات. • هناك 3 أنواع من الربط يمكننا استخدامها للربط بين الجداول: • الربط التقاطعي ”Cross join“. • الربط الداخلي ويسمى أيضا الربط الطبيعي أو المتكافئ ”Inner join“. • الربط الخارجي “Outer join“.

  3. الربط التقاطعي ”CROSS JOIN“ • الصيغة العامة: SELECT [DISTICNT | ALL] {* | column_list } FROM table_name1 CROSS JOIN table_name2; * يمكننا كتابة فاصلة ”” , بدل ”CROSS JOIN“ • الناتج من الربط التقاطعي بين جدولين سوف يكون عبارة عن جميع القيم المحتملة التي ترتبط بها الصفوف من الجدول الأول بالصفوف من الجدول الثاني.

  4. الربط التقاطعي ”CROSS JOIN“ • مثال: --------------------------------------------- SELECT * FROM Employee CROSS JOIN EmpSal أو SELECT * FROM Employee,EmpSal EmpSal Employee

  5. الربط الداخلي”INNER JOIN“ • هذا النوع من الربط هو الأكثر استخدام وذلك لأنه يعطي بيانات ناتجة عن قيم متناظرة بين جدولين أو أكثر وذلك يعني أن الناتج سوف يكون عبارة عن صف من البيانات المأخوذة من أكثر من جدول وذلك بناء على مقارنة قيم ببعضها باستخدام ”=“. • الصيغة العامة: SELECT [DISTINCT|ALL]{* |column|[column_expression [AS new_name]][,…]} FROM table_name [alias] [, … ] [WHERE condition]; نكتب عمود الربط في الجدول2 = عمود الربط في الجدول 1 WHERE

  6. الربط الداخلي”INNER JOIN“ • مثال: • Record (crs_id , s_id , semester, year , grade) • Student(std_id,std_name,bdate,std_national,dept_no,std_city, std_phone,std_password , nots) المطلوب: كتابة استعلام يعرض اسم الطالب ورقمه واسم المادة ودرجته فيها. • الحل: SELECT Student.std_name,Student.std_id,Record.grade,Record.crs_id FROM Student,Record WHERE Student.std_id = Record.s_id; • أو يمكننا كتابة: SELECT Student.std_name,Student.std_id,Record.grade,Record.crs_id FROM Student INNER JOIN Record ONStudent.std_id = Record.s_id;

  7. الربط الداخلي”INNER JOIN“

  8. الربط الداخلي”INNER JOIN“ • ملاحظات: • لابد من استخدام الأعمدة التي تربط الجداول (المفتاح الأساسي و المفتاح الأجنبي ) أو أعمدة لها نفس المعنى و المدلول و إلا سيكون ناتج الربط غير صحيح. • إذا كانت توجد سجلات في أحد الجداول ليس لها قيمة مناظره في الجدول الآخر فإنها لن تطبع. • يمكننا إضافة شروط على عملية الربط أو إجراء ترتيب.

  9. الربط الداخلي”INNER JOIN“ • مثال: - CLIENT (ClientNo, Fname, Lname, telNo, Type, Rent) - VIEWING (ClientNo, PropertyNo, Date, Comment) المطلوب:استرجاع أرقام الزبائن وأسماؤهم ورقم العقار والتعليقات. • الحل: SELECT c.clientNo, fname, lname, propertyNo,comment FROM client c, viewing v WHERE c.clientNo = v.clientNo; • أو يمكننا كتابة : SELECT c.clientNo, fname, lname, propertyNo,comment FROM client c INNER JOIN viewing v ON c.clientNo = v.clientNo;

  10. الربط الداخلي”INNER JOIN“ • مثال: - PROPERTYFORRENT (pno, street, area, city, pcode, type, rooms, rent, sno) - STAFF (sno, fname, lname, position, sex, DOB, salary, bno) • BRANCH (bno, street, city, postcode) المطلوب إيجاد أسماء الموظفين الذين يعملون بالفرع الواحد والعقارات التي يديرونها , بحيث تكون الأسماء مرتبة من حيث رقم الفرع و رقم الموظف ورقم العقار. • الحل: SELECT s.bno, s.sno, fname, lname, pno FROM staff s, propertyforrent p WHERE s.sno = p.sno ORDER BY s.bno, s.sno, p.pno;

  11. الربط الداخلي”INNER JOIN“ bno Sno LName pno FName B003 SG14 David Ford PG16 B003 SG37 Ann Beech PG21 B003 SG37 Ann Beech PG36 B005 SL41 Julie Lee PL94 B007 SA9 Mary Howe PA14

  12. الربط الخارجي ”OUTER JOIN“ • في الربط الداخلي (او المتكافئ) إذا لم توجد قيم تتصل من الجدول الأول بالجدول الثاني أو العكس فإنه لا يتم طباعة هذا السجل ولا السجلات المناظره له ، ولكن إذا اردنا أن نجبر البرنامج على طباعة الحقول التي لا يوجد لها سجلات مناظره نستخدم الربط الخارجي OUTER JOIN ، وفي هذه الحالة يتم طباعة السجل الاصلي بينما القيم المناظرة له من الجدول الاخر (التي هي غير موجودة ) تطبع قيم NILL . • هناك 3 أنواع للربط الخارجي: • ربط خارجي يساري ” LEFT OUTER JOIN“. • ربط خارجي يميني ” RIGHT OUTER JOIN“ . • ربط خارجي كلي ” FULL OUTER JOIN“ .

  13. الربط الخارجي اليساري ” LEFT OUTER JOIN“ • في هذا النوع سيتم استعراض السجلات في الجدول الأيسر والقيم المناظرة لها من الجدول الثاني وإذا لم توجد قيم مناظرة فإنه سوف يطبع NULL. • مثال: -Branch (BranchNo ,bCity) -Property(PropertyNo , pCity) المطلوب استرجاع أرقام الفروع وأرقام العقارات التابعة لها في نفس المدينة حتى وإن وجد فروع بلا عقارات. • الحل: SELECT b.*, p.* FROM branch b LEFT JOIN property p ON b.bcity = p.pcity;

  14. PROPERTY BRANCH PropertyNo pCity BranchNo bCity PA14 B003 Aberdeen Glasgow PL94 B004 London Bristol PG4 B002 Glasgow London BranchNo PropertyNo pCity bCity B003 Glasgow PG4 Glasgow B004 Bristol NULL NULL B002 London PL94 London SELECT b.*, p.* FROM branch b LEFT JOIN property p ON b.bcity = p.pcity;

  15. الربط الخارجي اليميني ” RIGHT OUTER JOIN“ • في هذا النوع سيتم استعراض السجلات في الجدول الأيمن والقيم المناظرة لها من الجدول الثاني وإذا لم توجد قيم مناظرة فإنه سوف يطبع NULL. • مثال: -Branch (BranchNo ,bCity) -Property(PropertyNo , pCity) المطلوب استرجاع أرقام الفروع وأرقام العقارات التابعة لها في نفس المدينة حتى وإن وجد عقارات ليست تابعة لفروع. • الحل: SELECT b.*, p.* FROM branch b RIGHT JOIN property p ON b.bcity = p.pcity;

  16. PROPERTY BRANCH PropertyNo pCity BranchNo bCity PA14 B003 Aberdeen Glasgow PL94 B004 London Bristol PG4 B002 Glasgow London BranchNo PropertyNo pCity bCity NULL NULL PA14 Aberdeen B003 Glasgow PG4 Glasgow B002 London PL94 London SELECT b.*, p.* FROM branch b RIGHT JOIN property p ON b.bcity = p.pcity;

  17. الربط الخارجي الكلي ” FULL OUTER JOIN“ • في هذا النوع سيتم استعراض السجلات في الجدول الأيمن والقيم المناظرة لها والسجلات في الجدول الأيسر والقيم المناظرة له وإذا لم توجد قيم مناظرة فإنه سوف يطبع NULL. • مثال: -Branch (BranchNo ,bCity) -Property(PropertyNo , pCity) المطلوب استرجاع أرقام الفروع وأرقام العقارات التابعة لها في نفس المدينة حتى وإن وجد عقارات ليست تابعة لفروع أو فروع لا تتبعها عقارات. • الحل: SELECT b.*, p.* FROM branch b FULL JOIN property p ON b.bcity = p.pcity;

  18. PROPERTY BRANCH PropertyNo pCity BranchNo bCity PA14 B003 Aberdeen Glasgow PL94 B004 London Bristol PG4 B002 Glasgow London BranchNo PropertyNo pCity bCity NULL NULL PA14 Aberdeen B003 Glasgow PG4 Glasgow B004 Bristol NULL NULL B002 London PL94 London SELECT b.*, p.* FROM branch b FULL JOIN property p ON b.bcity = p.pcity;

More Related