بعدما أنشأنا علاقة بين جدولين ، نستطيع الآن استعمال العبارة SELECT مرة واحدة ، للحصول على البيانات المرتبطة في كلا الجدولين.
إن العبارة JOINتستعمل للاستعلام عن البيانات في عدة جداول مرتبطة.
سنقوم بالاستعلام في الجداول باستعمال الثلاث صيغ رئيسية للعبارة JOIN .وهي :
- Inner Join
- Left Outer Join
- Cross Join
العبارة Inner Join:
إن العبارة inner join تستعمل لوصل قيم الأعمدة باستخدام عامل مقارنة .
من قواعد لغة SQL ، أنه بإمكاننا استعمال عبارة inner join إما مع العبارة FROM أو مع الشرط WHERE . فمثلا يمكننا عرض كل البيانات الخاصة بالعمال مع الشهادات الخاصة بهم :
SELECT EMPLOYERS.EMPLOYERID, EMPLOYERS.EMPLOYERNAME, ATTESTATION.ATESSTATIONLIBELLE, ATTESTATION.ATTESTATIONDATE FROM ATTESTATION INNER JOIN EMPLOYERS ON (ATTESTATION.EMPLOYERID=EMPLOYERS.EMPLOYERID);
فنحصل على النتائج التالية :
EMPLOYERNAME ATESSTATIONLIBELLE ATTESTATIONDATE Amar Lakhdar ATTESTATION DE TRAVAIL 05/08/2016 Said ATTESTATION DE TRAVAIL 06/08/2016 Mounir ATTESTATION DE TRAVAIL 05/08/2016 Fouad ATTESTATION DE TRAVAIL 04/08/2016 Nassim ATTESTATION DE TRAVAIL 05/08/2016 Kamel Benkamel ATTESTATION DE TRAVAIL 06/08/2016
يمكن إضافة الشرط WHERE لتقليص النتائج كما يلي:
SELECT EMPLOYERS.EMPLOYERNAME, ATTESTATION.ATESSTATIONLIBELLE, ATTESTATION.ATTESTATIONDATE FROM ATTESTATION INNER JOIN EMPLOYERS ON (ATTESTATION.EMPLOYERID=EMPLOYERS.EMPLOYERID);
فنحصل على النتيجة التالية :
EMPLOYERNAME ATESSTATIONLIBELLE ATTESTATIONDATE Kamel Benkamel ATTESTATION DE TRAVAIL 06/08/2016
يمكن تعويض الشرط WHERE بالعبارة AND كما يلي :
SELECT EMPLOYERS.EMPLOYERNAME, ATTESTATION.ATESSTATIONLIBELLE, ATTESTATION.ATTESTATIONDATE FROM ATTESTATION INNER JOIN EMPLOYERS ON (ATTESTATION.EMPLOYERID=EMPLOYERS.EMPLOYERID) AND (EMPLOYERS.EMPLOYERNAME='Kamel Benkamel')ERS.EMPLOYERID);
فتكون النتيجة مماثلة لماسبق:
EMPLOYERNAME ATESSTATIONLIBELLE ATTESTATIONDATE Kamel Benkamel ATTESTATION DE TRAVAIL 06/08/2016
العبارة Left Outer Join:
تستعمل العبارات JOIN outer لإرجاع كل الصفوف التي تنتمي إلى أحد الجداول على الأقل أو المشاهد المذكورة بعد الجملة FROM ، مع العبارة left JOIN outer ، يمكن إرجاع كل الصفوف مع الجدول الأيسر :
وهذا مثال يعرض كل العمال بما فيهم الذين لا يملكون شهادات :
SELECT EMPLOYERS.EMPLOYERID, EMPLOYERS.EMPLOYERNAME, ATTESTATION.ATESSTATIONLIBELLE, ATTESTATION.ATTESTATIONDATE FROM EMPLOYERS LEFT OUTER JOIN ATTESTATION ON (ATTESTATION.EMPLOYERID= EMPLOYERS.EMPLOYERID;
فتكون النتيجة :
EMPLOYERID EMPLOYERNAME ATESSTATIONLIBELLE ATTESTATIONDATE 1 Amar Lakhdar ATTESTATION DE TRAVAIL 05/08/2016 2 Kamel Benahmed     3 Kamel Benkamel ATTESTATION DE TRAVAIL 06/08/2016 4 Said ATTESTATION DE TRAVAIL 06/08/2016 5 Faird     6 Lakhder     7 Nassim ATTESTATION DE TRAVAIL 05/08/2016 8 Fouad ATTESTATION DE TRAVAIL 04/08/2016 9 Mounir ATTESTATION DE TRAVAIL 05/08/2016 10 Nadir     11 Tarik Moussafer    
العبارة CROSS JOIN :
لا يمكن إضافة الجملة WHEREمع العبارة CROSS JOIN ، وتطبيق هذه العبارة يعطينا المنتج الديكارتي لصفوف الجدول الأول في صفوف الجدول الثاني.
لذلك فقد يكون العدد الناتج من الصفوف كبيرا جدا ويستغرق وقتا كبيرا لعرض تلك الصفوف.
وهذا مثال عن تطبيق هذا الأمر :
SELECT EMPLOYERS.EMPLOYERID, EMPLOYERS.EMPLOYERNAME, ATTESTATION.ATESSTATIONLIBELLE, ATTESTATION.ATTESTATIONDATE FROM EMPLOYERS CROSS JOIN ATTESTATION ;
فتكون النتيجة كما يلي :
EMPLOYERID EMPLOYERNAME ATESSTATIONLIBELLE ATTESTATIONDATE 1 Amar Lakhdar ATTESTATION DE TRAVAIL 05/08/2016 1 Amar Lakhdar ATTESTATION DE TRAVAIL 06/08/2016 1 Amar Lakhdar ATTESTATION DE TRAVAIL 05/08/2016 1 Amar Lakhdar ATTESTATION DE TRAVAIL 04/08/2016 1 Amar Lakhdar ATTESTATION DE TRAVAIL 05/08/2016 1 Amar Lakhdar ATTESTATION DE TRAVAIL 06/08/2016 2 Kamel Benahmed ATTESTATION DE TRAVAIL 05/08/2016 2 Kamel Benahmed ATTESTATION DE TRAVAIL 06/08/2016 2 Kamel Benahmed ATTESTATION DE TRAVAIL 05/08/2016 2 Kamel Benahmed ATTESTATION DE TRAVAIL 04/08/2016 2 Kamel Benahmed ATTESTATION DE TRAVAIL 05/08/2016 2 Kamel Benahmed ATTESTATION DE TRAVAIL 06/08/2016 3 Kamel Benkamel ATTESTATION DE TRAVAIL 05/08/2016 3 Kamel Benkamel ATTESTATION DE TRAVAIL 06/08/2016 3 Kamel Benkamel ATTESTATION DE TRAVAIL 05/08/2016 3 Kamel Benkamel ATTESTATION DE TRAVAIL 04/08/2016 3 Kamel Benkamel ATTESTATION DE TRAVAIL 05/08/2016 3 Kamel Benkamel ATTESTATION DE TRAVAIL 06/08/2016 4 Said ATTESTATION DE TRAVAIL 05/08/2016 4 Said ATTESTATION DE TRAVAIL 06/08/2016 4 Said ATTESTATION DE TRAVAIL 05/08/2016 4 Said ATTESTATION DE TRAVAIL 04/08/2016 4 Said ATTESTATION DE TRAVAIL 05/08/2016 4 Said ATTESTATION DE TRAVAIL 06/08/2016 5 Faird ATTESTATION DE TRAVAIL 05/08/2016 5 Faird ATTESTATION DE TRAVAIL 06/08/2016 5 Faird ATTESTATION DE TRAVAIL 05/08/2016 5 Faird ATTESTATION DE TRAVAIL 04/08/2016 5 Faird ATTESTATION DE TRAVAIL 05/08/2016 5 Faird ATTESTATION DE TRAVAIL 06/08/2016 6 Lakhder ATTESTATION DE TRAVAIL 05/08/2016 6 Lakhder ATTESTATION DE TRAVAIL 06/08/2016 6 Lakhder ATTESTATION DE TRAVAIL 05/08/2016 6 Lakhder ATTESTATION DE TRAVAIL 04/08/2016 6 Lakhder ATTESTATION DE TRAVAIL 05/08/2016 6 Lakhder ATTESTATION DE TRAVAIL 06/08/2016 7 Nassim ATTESTATION DE TRAVAIL 05/08/2016 7 Nassim ATTESTATION DE TRAVAIL 06/08/2016 7 Nassim ATTESTATION DE TRAVAIL 05/08/2016 7 Nassim ATTESTATION DE TRAVAIL 04/08/2016 7 Nassim ATTESTATION DE TRAVAIL 05/08/2016 7 Nassim ATTESTATION DE TRAVAIL 06/08/2016 8 Fouad ATTESTATION DE TRAVAIL 05/08/2016 8 Fouad ATTESTATION DE TRAVAIL 06/08/2016 8 Fouad ATTESTATION DE TRAVAIL 05/08/2016 8 Fouad ATTESTATION DE TRAVAIL 04/08/2016 8 Fouad ATTESTATION DE TRAVAIL 05/08/2016 8 Fouad ATTESTATION DE TRAVAIL 06/08/2016 9 Mounir ATTESTATION DE TRAVAIL 05/08/2016 9 Mounir ATTESTATION DE TRAVAIL 06/08/2016 9 Mounir ATTESTATION DE TRAVAIL 05/08/2016 9 Mounir ATTESTATION DE TRAVAIL 04/08/2016 9 Mounir ATTESTATION DE TRAVAIL 05/08/2016 9 Mounir ATTESTATION DE TRAVAIL 06/08/2016 10 Nadir ATTESTATION DE TRAVAIL 05/08/2016 10 Nadir ATTESTATION DE TRAVAIL 06/08/2016 10 Nadir ATTESTATION DE TRAVAIL 05/08/2016 10 Nadir ATTESTATION DE TRAVAIL 04/08/2016 10 Nadir ATTESTATION DE TRAVAIL 05/08/2016 10 Nadir ATTESTATION DE TRAVAIL 06/08/2016 11 Tarik Moussafer ATTESTATION DE TRAVAIL 05/08/2016 11 Tarik Moussafer ATTESTATION DE TRAVAIL 06/08/2016 11 Tarik Moussafer ATTESTATION DE TRAVAIL 05/08/2016 11 Tarik Moussafer ATTESTATION DE TRAVAIL 04/08/2016 11 Tarik Moussafer ATTESTATION DE TRAVAIL 05/08/2016 11 Tarik Moussafer ATTESTATION DE TRAVAIL 06/08/2016
ليست هناك تعليقات:
إرسال تعليق