SQL Joining Tables

Download Report

Transcript SQL Joining Tables

‫‪Joining Tables‬‬
‫ضم الجداول وإستخراج مناظر ‪ views‬منها‬
‫الهدف ‪:‬‬
‫‪ -1‬استخراج المعلومات من جدولين أو اكثر باإلستفادة من الرابط بينهما‬
‫وبإستخدام ‪SQL‬‬
‫‪ -2‬شروط قواعد ضم الجدول‬
‫‪ -3‬تمرين‬
‫الموضوع ‪:‬‬
‫تحتاج في كثير من االحيان إلي استرجاع بيانات مخزنة في جدولين أو اكثر‬
‫بإستفسار واحد‪.‬‬
‫‪Joining Tables‬‬
‫ضم الجداول وإستخراج مناظر ‪ views‬منها‬
‫مثال ‪ -:‬من مثال الشركة نريد الحصول علي تقرير به‬
‫رقم الموظف واسم الموظف واسم القسم الذي يعمل به وذلك لكل الموظفين‬
‫المسجلين‬
‫‪Department‬‬
‫‪Employee‬‬
‫‪Q 18 :‬‬‫‪Select SSN, Fname , Lname , Dname‬‬
‫‪From Employee, Department‬‬
‫;‪Where DNO = Dnumber‬‬
‫‪ ‬تضم جملة ‪ Select‬السابقة األعمدة من جدول الموظفين‬
‫‪ Employee‬وجدول االقسام ‪ Department‬بإستخدام العمود‬
‫المشترك الرابط بين الجدولين و ‪ Dnumber‬في جدول االقسام‬
‫ويقيد الشرط المذكور بعد ‪ Where‬أنه سيتم إختيار فقط األسطر التي‬
‫يتطابق فيها الشرط في الجدولين‪.‬‬
 O / p of Q 18
SSN
Fname
Lname
Dname
123456789
John
Smith
Research
333445555
Franklin
Wong
Research
999887777
Alicia
Zelaya
administration
987654321
Jennifer
Wallace
administration
666884444
Ramesh
Narayan
Research
453453453
Joyce
English
Research
987987987
Ahmad
Jabbar
administration
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
administration
987987987
Ahmad
Jabbar
administration
‫‪ ‬استخدامات ضم الجداول ‪:‬‬
‫‪ .1‬للحصول علي بيانات من حقول سجالت الجدولين وضمها معا ً مثل المثال‬
‫السابق ‪.‬‬
‫‪ .2‬الحصول علي بيانات موجودة بجدول واحد إعتماداً علي شرط يطبق علي‬
‫عمود بالجدول األخر مثل المثال التالي‬
‫‪Q20‬‬
‫ للحصول علي أسماء‬Select ‫من مثال الشركة اكتب جملة‬
‫الموظفين الذين يعملون بمشاريع‬
Q 20 :Select Distinct (Fname , Lname )
Fname
From Employee, Works ‫ـــ‬on
John
Where SSN = ESSN;
O / p of Q 20
‫ملحوظة‬
‫نالحظ في االمثلة السابقة ان العمود في أحد جدولي‬
‫بينما العمود في الجدول‬PK ‫الربط يمثل مفتاح رئيسي‬
Foreign key ‫االخر يمثل مفتاح أجنبي‬
Lname
Smith
Franklin
Wong
Alicia
Zelaya
Jennifer
Wallace
Ramesh
Narayan
Joyce
English
Ahmad
Jabbar
James
Borg
‫قواعد ضم الجدول‬
‫‪ .1‬ال يزيد عدد الجداول في جملة ‪ Select‬الواحدة نظريا ً عن ‪ 15‬جدول ولكن عمليا ً‬
‫تشير وثائق ‪ IBM‬إلي استخدام سبعة جداول كحد اقصي وبصورة عملية اكثر يوصي‬
‫بعدم إستخدام اكثر من أربعة جداول في جملة ‪ Select‬الواحدة وخاصة مع الجداول‬
‫ذات الحجم المتوسط أو الكبير (من ‪ 10.000‬إلي ‪ 100.000‬سجل لكل جدول )‪.‬‬
‫‪ .2‬في حالة إستخدام عمودين لهما نفس اإلسم وهما من جدولين مختلفين يتم إستخدام إسم‬
‫الجدول مع إسم العمود للتمميز بينهما مثل ‪:‬‬
‫‪Department.sex‬‬
‫‪Employee.sex‬‬
‫‪ .3‬يجب أن يكون نوع حقول األعمدة المستخدمة لربط الجداول من نفس النوع (حروف أو‬
‫أعداد صحيحة أو اعداد حقيقية‪(.....‬‬
‫‪ .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
SSN
123456789
333445555
999887777
987654321
666884444
453453453
987987987
888665555
Fname
MI Lname BDAT
NIT
E
John
B
Smith
196501-09
Franklin
T
Wong
195512-08
Alicia
J
Zelaya 196801-19
Jennifer
S
Wallace 194106-20
Ramesh
K Narayan 196209-15
Joyce
A
English 197207-31
Ahmad
V
Jabbar 196903-29
James
E
Borg
193711-10
ADDRESS
SEX salary
731
fondren,Houton,tx
638 voss,houstong,tx
M
30000
M
40000
3321 castle,spring,tx
F
25000
291 berry,bellair,tx
F
43000
975 fire
oak,humble,tx
5631 rice,Houston,tx
M
38000
F
25000
980
Dallas,Houston,tx
450 Stone,Houston,tx
M
25000
M
55000
Department
DNAME
Research
Administration
Headquarters
DNUMBER
5
4
1
MGRSSN
333445555
987654321
888665555
MGRSTARTDATE
1988-05-22
1995-01-01
1981-06-19
Super
DN
SSN
O
33344555
5
5
88866555
5
5
98765432
4
1
88866555
4
5
33344555
5
5
33344555
5
5
98765432
4
1
Null
1
‫‪Q 22 :‬‬‫ضم جدول ‪ Employee‬وجدول ‪Department‬من خالل قيم‬
‫‪ DNO‬وإظهار كل أعمدة وسجالت الجدولين مع ترتيب الجدول الناتج‬
‫طبقا ً لرقم الموظف‪.‬‬
‫‪Select‬‬
‫*‬
‫‪From Employee, Department‬‬
‫‪Where DNO = Dnumber‬‬
‫;‪Order by SSN‬‬
 O / p of Q 22
Employee
SSN
123456789
333445555
999887777
987654321
666884444
453453453
987987987
888665555
Fname
MI Lname BDAT
NIT
E
John
B
Smith
196501-09
Franklin
T
Wong
195512-08
Alicia
J
Zelaya 196801-19
Jennifer
S
Wallace 194106-20
Ramesh
K Narayan 196209-15
Joyce
A
English 197207-31
Ahmad
V
Jabbar 196903-29
James
E
Borg
193711-10
ADDRESS
SEX salary
731
fondren,Houton,tx
638 voss,houstong,tx
M
30000
M
40000
3321 castle,spring,tx
F
25000
291 berry,bellair,tx
F
43000
975 fire
oak,humble,tx
5631 rice,Houston,tx
M
38000
F
25000
980
Dallas,Houston,tx
450 Stone,Houston,tx
M
25000
M
55000
Department
DNAME
Research
Administration
Headquarters
DNUMBER
5
4
1
MGRSSN
333445555
987654321
888665555
MGRSTARTDATE
1988-05-22
1995-01-01
1981-06-19
Super
DN
SSN
O
33344555
5
5
88866555
5
5
98765432
4
1
88866555
4
5
33344555
5
5
33344555
5
5
98765432
4
1
Null
1
‫‪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