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

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


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

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

نواصل الطريق لتوضيح طرق التعامل مع الاستعلامات.. وكيفية كتابتها..

فكرة سريعة عن الدرس : سنوضح كيفية استخدام معامل المساواة والمعاملات الرياضية..
وسنأخذ معاملين من المعاملات المنطقية البسيطة And و Or وسنأخذ أيضاً معاملين جدد سنشرحهم بإذن الله وهما Like و Between .

تؤخذ صيغة استخدام المعاملات كشرط في عملية الإستعلام..
والصيغة العامة لها كالتالي :



Select * From Table_Name Where Field = Value;

Table_Name : اسم الجدول .
Field : اسم الحقل المراد الاستفسار عن قيمه .
Value : القيمة المراد الاستفسار عنها .

ملاحظة / يمكننا استخدام المعاملات (> أو < أو => أو =< أو <>) بدلاً من المعامل (=) .



مثال : الاستعلام عن الأصدقاء الذين تساوي أعمارهم 60سنة :


SELECT * FROM Rabia WHERE age = 60;


نفذ الاستعلام السابق وستجد جميع بيانات الذين تساوي أعمارهم 60 سنة..


يسأل أحد الأذكياء ويقول : كيف ظهرت لي جميع بيانات الشخص.. وأنا استعلمت عن عمره فقط ؟؟
الجواب : في الحقيقة أنت لم تستعلم عن عمره وإنما عن جميع بياناته ألا ترى العلامة (*) التي قلنا أنها تعني الكل ولكنك وضعت خانة العمر كشرط ليس إلا.. وقد تكلمنا عن هذا..

سأذكرك.. هل نسيت العبارة التي ذكرناها في أول الدرس :
(تؤخذ صيغة استخدام المعاملات كشرط في عملية الإستعلام..)

مثال آخر : سيزيد الأمور توضيحاً وسيضيف لك الجديد..
مثال : لعرض أسماء من هم أصغر من 80 سنة :


SELECT FName,LName FROM Rabia where age < 80;


لاحظ أننا حددنا نوع البيانات التي نريدها وهي الأسماء فقط بوجود شرط العمر..
وبالتالي سيعرض لك أسماء الذين أعمارهم أصغر من 80 دون عرض أعمارهم..
أتمنى أن تكون الفكرة قد وصلت..

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

تقنية الاستعلامات كباقي لغات البرمجة.. لا أريد أن أدخل بك في تشعبات البرمجة.. ولكن ما أريدك أن تعرفه فقط هو هذا القانون البسيط..

(إذا كانت القيمة الموجودة في الكود عددية - Number - فليس من الضروري وضعها بين علامتي تنصيص.. أما إذا كانت القيمة الموجودة في الكود نصية - String - فإنه لابد من وضعها بين علامتي تنصيص) << هذا هو أحد قوانين البرمجة.. وتخرج عن هذا القانون بعض لغات البرمجة..

في آكسيس : إذا كانت القيمة الموجودة في الكود عددية فلا تضع لها علامتي تنصيص..
أما إذا كانت نصية فلابد أن تضعها بين علامتي تنصيص مفردة..

مثال :البحث عن بيانات الأشخاص الذين يحملون الاسم (أبو ربيع)..


SELECT * FROM Rabia WHERE Fname = 'أبو ربيع';

لاحظ أنها قيمة نصية لذلك وضعناها بين علامتي تنصيص مفردة..

- أما عند البحث عن بيانات بتحقيق شرط التاريخ فيختلف الأمر..
وذلك لابد أن نضع اتاريخ بين علامتي (#).. في قاعدتنا لا يوجد تاريخ.. ولكن خذ المثال..
مثال : سنبحث عن البيانات التي لها تاريخ أكبر من التاريخ 12/03/2008


Select * Form Rabia Where Date > #12/03/2008#;


أتمنى أن يكون المثال واضح..

- لقد أخذنا أشياء لا بأس بها عن الاستعلامات.. ما رأيك أن ندمج بعض ما تعلمناه في جملة استعلام واحدة..؟؟

مثال :لاستخراج الإسم الأول والأخير من الجدول بالترتيب تنازلياً ودمجة سوياً تحت اسم Name والتي تحقق شرط أن العمر أكبر من 50:


SELECT Fname & " " & Lname AS Name FROM Rabia WHERE age > 50 ORDER BY FNAME, LName DESC;


وهكذا تستطيع تنفيذ أوامر أكثر ذكاء..

ولكن : ماذا لو أردنا البحث بتحقيق مجموعة شروط أو أحدها أو تحقيق شرط مع إلغاء شرط آخر ؟
من أجل هذا الغرض نستخدم المعاملات المنطقية البسيطة .

- لدينا نوعين من المعاملات المنطقية البسيطة الأكثر استخداماً :

And : تعطي قيمة صحيحة True في حالة كان الطرفين صحيحاً والباقي false
Or : تعطي قيمة صحيحة True في حالة كان أحد الطرفين صحيحاً وإلا فإنه يعطي false

فكرت بطريقة للتوضيح أكثر فخرجت بهذه الصورة وأتمنى أن تفي بالغرض..

http://upload.traidnt.net/upfiles/Lbj91368.jpg

إن شاء الله واضحة..

والآن إلى مثال سريع ، سنبحث عن أسماء الأشخاص الذين يكبر عمرهم عن 50 بشرط ألا يكونوا متزوجين :


Select Fname from Rabia where age > 50 and marry = false;


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

** قبل أن تجرب المثال قم بتشغيل قاعدة البيانات وقم بحذف البريد الإلكتروني لبعض الأشخاص ، واكتب للبعض كلمة No Mail وللآخرين No .

الآن انظر الأمر التالي :


SELECT * FROM Rabia WHERE age>50 And (Email='No' or Email='No Mail');


هل رأيت كيف استخدمنا المعاملين And و Or مع بعض وفي أكثر من شرط..

سنفصل الآن هذه الجملة :
* الشرط الأول : Age > 50 : العمر أكبر من 50 .
* الشرط الثاني : Email = 'No' : البريد الإلكتروني لابد أن يحتوي على كلمة No .
* الشرط الثالث : Email = 'No Mail' : البريد الإلكتروني لابد أن يحتوي على كلمة No Mail .

واستخدمنا نوعين من المعاملات المنطقية And و Or .

قبل النهاية كن حذراً عند استخدام And مع Or في جملة واحدة ، وذلك عن طريق ترتيب الأقواس بطريقة صحيحة .


استخدام المعاملLike

نستخدم المعامل Like للبحث عن الكلمات المشابهه لتعبير معين ...
ونستخدم للمعامل Like الصيغة التالية :


Select * From Table Where Field Like '*Name*';


نستخدم * للدلالة على وجود أحرف ما ... وقد نستخدمها في البداية ، أو النهاية ، أو كليهما . وسيتضح الأمر في الأمثلة التالية :

لعرض الأشخاص الذين قد تحتوي أسماءهم الأولى على (بو).. فإننا سنستخدم جملة استعلام بهذا الشكل :


SELECT * FROM Rabia WHERE FName like '*بو*';

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


SELECT * FROM Rabia WHERE FName like 'أ*';


ولو أردنا البحث عن الأشخاص الذين ينتهي اسمهم بحرف معين سنضع * في البداية دون النهاية .

ملاحظة / في لغة MS SQL Server نستخدم % بدلاً من * .


مما سبق نستنتج أن (*) تعني أي عدد من الحروف ، ولكن ماذا لو أردنا تحديد عدد الحروف ؟

في هذه الحالة نستخدم علامة الاستفهام "؟" والتي ذكرناها في درس البحث في البداية .

إذاً : ماذا لو أردنا أن نبحث عن الأشخاص الذين تبدأ أسماءهم بحرف الألف بشرط أن يكون عدد حروفهم 4 فقط .. لاحظ المثال :


SELECT * FROM Rabia WHERE FName like 'أ???';


والآن إلى مثال واقعي نسبياً . جرب تعديل حقل العنوان Address للأشخاص بحيث يحتوي على أكثر من معلومة اضافة للمدينة .
في هذه الحالة نستطيع استخراج الأشخاص الذين يسكنون مدينة واحدة عن طريق الشرط Like .
هل تعرف كيف ؟؟؟
بنفس تلك الطرق.. ولكن سأترك لك التفكير..



استخدام المعامل Between

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

يأخذ البحث باستخدام between الصيغة التالية :


SELECT colum FROM table WHERE field BETWEEN v1 AND v2;


مثال : لاستخراج الأشخاص الذين تترواح أعمارهم بين 50 و 80:


SELECT * FROM Rabia WHERE age between 50 and 80;


ويمكن استخدام نفس الطريقة مع الأسماء ، والتواريخ... بطبيعة الحال ..

مثال :لإستخراج بيانات الأشخاص الذين تقع أسماؤهم بين الاسمين ( أحمد و صالح )


SELECT * FROM Rabia WHERE FName between 'أحمد' and 'صالح';

أتمنى أن يكون المثال واضحاً..







هذا والله تعالى أعلم..

تم بحمد الله.. ونلتقي بالدرس القادم إن شاء الله..

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

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

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