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

عسووول

جامعي

 
تاريخ التسجيل: 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;


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

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

 


التعديل الأخير تم بواسطة عسووول ; 20-01-2009 الساعة 03:11 PM.
عسووول غير متواجد حالياً   رد مع اقتباس