برنامج SQLite - عبارات JOIN

بعدما أنشأنا علاقة بين جدولين ، نستطيع الآن استعمال العبارة SELECT مرة واحدة ، للحصول على البيانات المرتبطة في كلا الجدولين.
يمكن القيام بذلك باستعمال العبارة JOIN
إن العبارة 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 &nbsp &nbsp
3 Kamel Benkamel ATTESTATION DE TRAVAIL 06/08/2016
4 Said ATTESTATION DE TRAVAIL 06/08/2016
5 Faird &nbsp &nbsp
6 Lakhder &nbsp &nbsp
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 &nbsp &nbsp
11 Tarik Moussafer &nbsp &nbsp

العبارة 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

ليست هناك تعليقات:

إرسال تعليق

المشاركات الشائعة