عرض مشاركة واحدة
منتديات طلاب وطالبات جامعة الملك عبد العزيز منتديات طلاب وطالبات جامعة الملك عبد العزيز
قديم 20-01-2009, 03:14 PM   #36

عسووول

جامعي

 
تاريخ التسجيل: Apr 2008
التخصص: علوم حاسبات
نوع الدراسة: متخرج
المستوى: العاشر
الجنس: ذكر
المشاركات: 67
افتراضي رد: نقاش حول واجب cs424 الواجب السادس مع معلومات عن الاختبار

هذا الحل زي ما حليت انا طبق بالضبط


الربط في السيكيول SQL Join :

الغرض من ربط الجداول ببعضها هو استخراج البيانات من أكثر من جدول في قاعدة البيانات !! كذلك يستخدم الربط كوسيلة لمنع تكرار القيم في أي حقل من حقول الجداول بصورة مزعجة أحياناً ، فمثلاً حينما يكون للطالب أكثر من مادة وتدرج جميع المواد مع اسم الطالب في نفس الجدول ، ستكون النتيجة وجود عدد كبير من السجلات لنفس الطالب في نفس الجدول ، كل سجل خاص بمادة !! وهذا غير عملي أبداً إذ أنه يؤدي إلى كبر الجدول وبالتالي زيادة المساحة التخزينية له !! لذلك فإننا نقوم بعمل جدولين جدول للطالب بكامل بياناته ( الاسم -الرقم - تاريخ الميلاد -التخصص - المعدل ... ألخ ) وجدول آخر للمواد يحوي أسم المادة وأرقام الطلاب الذين يدرسونها ، ونربط بين الجدولين برقم الطالب بالتأكيد حيث أننا اخترناه مفتاحاً لاستحالة تكراره لأكثر من طالب !!

ولاستخراج بيانات من جدولين ، نستخدم المفتاح الذي يربط بينهما في الشرط ، كالتالي :



SELECT Table1.any_column, Table2.any_column

FROM Table1, Table2

WHERE Table1.Keycolumn = Table2.foreign_Keycolumn
;
مثال :

اطبع اسماء الموظفين ورقم القسم الذي يعملون فيه واسم المشروع الذي يعملون عليه ؟ - ملاحظة : هذه البيانات موجودة في جدولين -
الحل :



SELECT FNAME , DNUM, PNAME
FROM EMPLOYEE , PROJECT
WHERE DNUM = DNO
;
OR
SELECT EMPLOYEE.FNAME, PROJECT.DNUM, PROJECT.PNAME

FROM EMPLOYEE, PROJECT

WHERE PROJECT. DNUM = EMPLOYEE.DNO
;

وان شاء الله اسوى لكم برنت من واجبي

لا تنسونا من الدعاء

 

عسووول غير متواجد حالياً   رد مع اقتباس