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