منتديات | املي | العاب | العاب بنات | تلبيس باربي | العاب اكشن | تعليم طبخ | العاب مشاهير  | العاب فلاش

دروس تعلمية

شبكة ومنتديات املي

مجموعات Google

اكتب بريدك في المربع ثم اضغط على "اشتراك" لكي يصلك جديد الموقع على بريدك مباشرة

البريد الإلكتروني:

مواضيع حصرية على بريدك أنت فقط إشترك الآن وفعل إشتراكك من بريدك

 

 

  |   |   | |  

 دردشة دروس الفوتوشوب

مسجات الجوال

ماسنجر

رسائل حب

 دليل مواقع  دروس تعليمية  فيديو  منتديات   قروب املي

 
    دروس في قواعد البيانات  سكيول - SQL
 

 

دورة SQL [الدرس الخامس] : الربط في السيكيول SQL Join



بسم الله الرحمن الرحيم

بعد أن تعرفنا على أوامر السيكيول ودوالها خلال الأربعة أيام الماضية ، وقطعنا شوطاً كبيراً فيها ولله الحمد ، نأتي اليوم إلى نهاية المطاف ، الدرس الخامس والأخير في الدورة ، ولكن الدروس ستستمر بعد الدورة إن شاء الله للتعمق أكثر في اللغة .

درس اليوم هو ربط الجداول وكيفية استخدام هذا الربط في الأوامر وبالتالي استخراج بيانات من أكثر من جدول في قاعدة البيانات .المفاهيم التي تعلمناها في أول أيام الدورة ستفيدنا كثيراً كثيراً بإذن الله :) فهل تذكرون هذا العرض :

 

الربط في السيكيول 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;

والنتيجة :

 

هذه هي الطريقة الاعتيادية ، بينما يوجد في لغة السيكيول كلمة Join إحدى كلمات اللغة .. ولها عدة أشكال أيضاً :

الشكل الأول :INNER JOIN:

هذا النوع من الربط سيعطينا النتائج من الجدولين والتي يتحقق فيها الشرط ، صيغته :


SELECT field1, field2, field3
FROM first_table INNER JOIN second_table ON first_table.keyfield = second_table.foreign_keyfield;

مثال :

 نفس المثال السابق :اطبع اسماء الموظفين ورقم القسم الذي يعملون فيه واسم المشروع الذي يعملون عليه ؟
الحل :


SELECT EMPLOYEE.FNAME, PROJECT.DNUM, PROJECT.PNAME
FROM EMPLOYEE INNER JOIN PROJECT ON EMPLOYEE.DNO = PROJECT.DNUM;

 والنتيجة هي نفسها كما في الصورة السابقة .

 

الشكل الثاني : LEFT JOIN:

هذا النوع من الربط يعطينا جميع السجلات ( الصفوف ) من الجدول الأول ( وهو الجدول الذي ييكتب على يسار كلمة LEFT JOIN في الأمر )   سواء المرتبطة بقيم في الجدول الثاني أو غير المرتبطة ، جميع سجلات الجدول الأول ستظهر في النتائج ، صيغته :


SELECT field1, field2, field3
FROM first_table LEFT JOIN second_table ON first_table.keyfield = second_table.foreign_keyfield;

مثال :

اطبع قائمة باسماء الموظفين وعدد ساعات عملهم ؟
الحل :


SELECT EMPLOYEE.FNAME, WORKS_ON.HOURS
FROM EMPLOYEE LEFT JOIN WORKS_ON ON EMPLOYEE.NUMBER = WORKS_ON.ENUMBER;

والنتيجة : ظهر لدينا السجل الذي أضفناه إلى جدول الموظفين في الدرس السابق ، سجل الموظف "MOHD AHMED" بالرغم من أننا لم نحدد له ساعات العمل في جدول العمل  ،لذلك خانة الساعات أمام هذا الموظف ظهرت خالية :

 

الشكل الثالث : RIGHT JOIN:

هذا النوع  من الربط هو معكوس النوع السابق تماماً ، فهو يعطينا جميع السجلات ( الصفوف ) من الجدول الثاني ( وهو الجدول الذي يأتي على يمين كلمة RIGHT JOIN عند كتابة الأمر ) سواء كانت مرتبطة بقيم في الجدول الأول أو لا ، جميع سجلات الجدول الثاني ستظهر في النتائج ، صيغته :


SELECT field1, field2, field3
FROM first_table RIGHT JOIN second_table ON first_table.keyfield = second_table.foreign_keyfield;

وكمثال عليه :
سنأخذ نفس المثال السابق ولكن سنغير ترتيب الجداول في FROM وكذلك ترتيب الحقول في SELECT ولا ننسى أن نكتب RIGHT JOIN ، كالتالي :


SELECT WORKS_ON.HOURS, EMPLOYEE.FNAME
FROM WORKS_ON RIGHT JOIN EMPLOYEE ON EMPLOYEE.NUMBER = WORKS_ON.ENUMBER;

والنتيجة هي :

 

مثال يوضح ربط ثلاثة جداول ببعضها البعض :

اطبع اسماء الموظفين ورقم القسم الذي يعمل فيه كل موظف واسم المشروع الذي يعمل عليه وعدد ساعات عمله !

الحل :


SELECT EMPLOYEE.FNAME, EMPLOYEE.DNO, PROJECT.PNAME,WORKS_ON.HOURS
FROM (EMPLOYEE INNER JOIN PROJECT ON EMPLOYEE.DNO = PROJECT.DNUM) INNER JOIN WORKS_ON ON (PROJECT.PNUMBER = WORKS_ON.PNO) AND (EMPLOYEE.NUMBER = WORKS_ON.ENUMBER);

والنتيجة :لا نرى فيها سجل الموظف الجديد " MOHD AHMED" كما توضح الصورة التالية :

 

بهذا نكون قد أكملنا دروس دورتنا بفضل من الله .. فالحمد لله الذي هدانا وما كنا لنتهدي لولا أن هدانا الله :) .

 

الواجب :

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



المزيد من المواضيع

أمر التجميع والإحتواء ودوال المجموع SQL Group & SQL HAVING with Aggregate Function
دورة SQL [الدرس الرابع / الجزء الثاني] : أوامر إضافة ، تحديث، وحذف السجلات
دورة SQL [الدرس الرابع / الجزء الأول] : الدوال SQL Functions
دورة SQL [الدرس الثالث : الجزء الثاني] : التعمق في الشروط
دورة SQL [الدرس الثالث : الجزء الأول] : الأمر Select ... From ... Where
دورة SQL [الدرس الأول] : مقدمة في قواعد البيانات

1

 

الاقسام الرئيسية

دروس للمبتدئين

--

دروس في أنظمة التشغيل

--

دروس في الانترنت

--

دروس في لغات البرمجة

--

دروس في برمجة المواقع

--

دروس في الأوفيس

--

دروس في الرسوم و التصميم

--

دروس في قواعد البيانات

--

دروس في الألعاب والبرامج

--

دروس في المكونات الصلبة

--

دروس في الشبكات

--

دروس في أمن المعلومات

--

دروس في الذكاء الاصطناعي

--

القائمة البريدية

منتدى |  حواء | مكتبة الصور | توبيكات | فيديو | برامج | دليل مواقع |   الثقافة الجنسية | صور | ماسنجر | الانمي | مطبخ | القرآن الكريم | التفسير | جوال | الاسرة المسلمة | سيارات | العاب | دروس الفوتوشوب | ديكورمسجات الجوال | قصائد مسموعة | قروب  | دروس تعليمية | عالم حواء | رسائل حب | تفسير الاحلام | الطب البديل | النكت | موسوعة الطفل | احسب وزنك | املي | منتدى املي | منتديات املي

amlly.com xml :                             

مقاطع بنات | مقاطع رياضية  | افلام الكرتون  | الازياء والفساتين والاناقة

 |  اشهر موقعك | اعلن لدينا | اسعار الاعلانات |  لمراسلة الإدارة  |

:: ©2009-2008 www.amlly.com.com All rights reserved ::