المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : الدرس الثاني عشر والأخير الجزء الرابع - لغة تقنية الاستعلامات - الدوال في الاستعلامات - دورة Microsoft Access 2003


khaledbelal
03-30-2010, 10:26 PM
بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته


الدوال في الاستعلامات .

تستخدم العديد من الدوال ضمن طيات جمل الاستعلام ، وهي شائعة الاستخدام ، ومريحة ، وتعيد قيمة وحيدة - لا تعيد جدول - سنتعرف على بعض الدوال مع بعض الأمثلة خلال هذا الدرس .

ولننظر نظرة سريعة إلى الصيغة العامة لاستخدام الدوال والتي تأخذ الشكل التالي :


SELECT func(colum) FROM table WHERE condition;



الدالة :AVG




تعطينا هذه الدالة متوسط حقل ما ، مثال لحساب متوسط الأعمار في قاعدة البيانات تبعنا نكتب أمراً كالتالي :


Select AVG(Age) from Rabia;


ولك ان تتخيل ماذا سنفعل لو لم نستخدم هذه الدالة ، كنا سنبحث عن جميع السجلات حيث نجمع ارقام كل سجل ثم ننتقل إلى التالي ثم......... ولكن هكذا - برمجياً - .

أيضاً يمكننا استخدام الدالة بشرط ... فمثلاً لحساب متوسط أعمار الأشخاص الذين لا تزيد أعمارهم عن 60 :


SELECT AVG(Age) FROM Rabia where age < 60;


نفذ الاستعلام ولو لاحظت لوجدت أن ناتج الدالة يظهر في حقل تحت اسم Expr100أو ما شابه ... لذا قم - إذا كنت تريد - بإعادة تسمية حقل الناتج عن طريق Asكما تعلمنا ذلك سابقاً وبالشكل التالي :


SELECT AVG(Age) as AVGAGE FROM Rabia WHERE age < 60;


لاحظ أيضاً أن الدالة سوف تتجاهل السجلات الفارغة..


الدوال :
Min : تعطيك الأصغر من بين القيم .
Max :تعطيك الأكبر من بين القيم .
Sum : تعطيك مجموع جميع القيم .

مثال على أكبر عمر في قاعدة البيانات :


SELECT max(Age) AS mxAGE FROM Rabia;


غير مكان max الدالتين المتبقيتين.. لترى النتائج..
ولا تنسى أن بإمكاننا وضع شرط لعملية الإستعلام .


الدالة : Count

وتعيد هذه الدالة عدد السجلات ولها صورتان تعمل مع أكسيس ... أما الصورة الثالثة فهي لا تعمل على الاكسيس :

الصيغة الأولى : Count(colum) .. وتعيد عدد السجلات التي لم يكن هذا الحقل فارغاً فيها .
الصيغة الثانية : Count(*) .. وتعيد عدد السجلات دون النظر إلى إذا ما كانت فارغة أم لا .
أما الصيغة الثالثة : COUNT(DISTINCT Colum( حيث تقوم بعد السجلات مع تجاهل المكرر منها .

ولنرى مثالاً على الصيغة الثانية :


Select count(*) From Rabia;


لا تنسى أن بإمكانك وضع شرط لعملية العد .

كانت هذه بعض الدوال البسيطة والاكثر شهرة في TSqlوالآن ، ماذا لو كانت لدينا علاقات ونرغب في العمل عليها ؟

في مثل هذه الحالة ... نريد الحصول على معلومات البطاقة الشخصية الخاصة باسم ما وذلك من Tb_R1 - لاحظ أنه لا يوجد حقل للاسم في الجدول الثاني - .


SELECT Rabia.Fname, Rabia.lname, Tb_R1.passport, tb_r1.bclass, tb_r1.from
FROM Rabia, tb_r1
WHERE Rabia.Number = tb_r1.Number;



دعنا الآن نشرح الكود ونلاحظ الفروق بين هذه الطريقة والطريقة السابقة :


أولاً :نقوم بكتابة اسم الجدول.اسم الحقل وذلك مهم لأننا نتعامل مع أكثر من جدول .

ثانياً :نقوم بكتابة اكثر من جدول بعد عبارة From لأننا نريد النواتج من أكثر من جدول .

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

دعنا الآن نجرب مثالاً آخر ... وذلك بالاستعلام عن كافة المعلومات التي تتعلق بالأصدقاء الذين تزيد أعمارهم عن 50 سنة .


SELECT Rabia.Fname, Rabia.lname, Tb_R1.passport, tb_r1.bclass, tb_r1.from
FROM Rabia, tb_r1
WHERE Rabia.Number = tb_r1.Number and Rabia.age >50;


والآن نريد تطبيق امثلة جديدة ، ولكي نبدأ في تطبيق أمثلة هذا الدرس لا بد أن يكون بعض الأصدقاء لديهم سجلات في الجدول الثاني والبعض الآخر لا .

مازال حديثنا عن العلاقات وما يتعلق بها مستمراً..


الدالة : Join

لهذه الدالة ثلاثة أنواع.. وسنتحدث عن كل نوع بشيء من التفصيل.. إليك تلك الأنواع :


النوع الأول : Inner Join

هي الطريقة العادية والتي تحدثنا عنها في الدرس السابق تعطينا النواتج في حال كان شرط العلاقة متحققاً في كلا الجدولين .
بمعنى : جرب أن تحذف بعض سجلات الأصدقاء من الجدول الثاني ، وستجد أن معلوماتهم - حتى الأساسية - لن تظهر .
هذا النوع من الربط يطلق عليه Inner Joinوهو الافتراضي ... ويمكننا كتابته بالشكل التالي للتفريق بين الأنواع المختلفة :


SELECT Rabia.Fname, Rabia.lname, Tb_R1.passport, tb_r1.bclass, tb_r1.from
FROM Rabia inner join tb_r1
on Rabia.Number=tb_r1.Number;


لاحظ أننا استبدلنا Where بـ onكما وضعنا inner join بين اسمي الجدولين .


النوع الثاني : Left Join

في هذا النوع يعرض جميع بيانات الجدول الأول ( على اليسار ) ومن ثم يعرض البيانات المقابلة في الجدول الثاني .

لاحظ في هذا النوع أمرين :


* إذا كانت هناك سجلات ( على اليسار ) لا تقابلها سجلات على اليمين فإن اليسار يعرض ويعرض اليمين فارغاً .


* وإذا كانت هناك سجلات ( على اليمين ) ليس لها مقابل على اليسار فإنها لا تُعرض أبداً .


مثال هذه النوعية :


SELECT Rabia.Fname, Rabia.lname, Tb_R1.passport, tb_r1.bclass, tb_r1.from
FROM Rabia Left JOIN tb_r1 ON Rabia.Number=tb_r1.Number;



النوع الثالث : Right Join

هو النوع العكسي تماماً للعملية السابقة ، وبإختصار هذا مثال عليه :


SELECT Rabia.Fname, Rabia.lname, Tb_R1.passport, tb_r1.bclass, tb_r1.from
FROM Rabia Right JOIN tb_r1 ON Rabia.Number=tb_r1.Number;




*** في النهاية أود أن انبه إلى أنه ما زال هناك الكثير في TSQL ولكن كانت هذه مقدمة لا بأس بها عنها ***





تم بحمد الله.. وانتهى الدرس وبه تنتهي دورة الآكسيس 2003..

ولن نلتقي بالدرس القادم ^_^ ..


تحياتي : أبو ربيع

-------------------------------

المصدر (http://www.gryati.com/vb/showthread.php?t=14486)

akramnasr
05-22-2010, 03:19 PM
شكرررررررررررررررررررررررررررررررررررررررررررررررر رررررررررررررررررررررررررررررا

الشمرول
08-17-2011, 02:03 PM
مشكوووور يا أخي *_^