![]() |
استعلامات الاختيار( التحديد ) Select Queries الجزء الأول إعداد : محمد طاهر |
الجزء الأول - محتوبات الموضوع :
الجزء الثاني : من هنا
إنشاء استعلامات الاختيار( التحديد ) من وضع التصميم Creating Select Queries From Design View
بالعودة الي الشاشة الرئيسية للاكسس و اختيار خيار الاستعلامات Queries من مربع حوار قاعدة بيانات الاكسس سنجد امامنا خياران
الثاني هو استعمال المعالح لانشاء استعلام ، و الأول هو انشاء استعلام من وضع التصميم ، و هو الذي سنبدأ به
و سنختار الحيار الاول : وضع التصميم ، فتظهر لنا شاشة بها الجداول الموجودة فى قاعدة البيانات
و الجداول الموجودة هنا فى المثال هي من المثال الافتراضي الذي يأتي مع الاكسس المسمي Northwind
فنختر الجدول الذي نريد و ذلك بالنقر المزدوج عليه أو باختياره ثم ضغط زر add
و نلاحظ وجود علامة تبويب tab فى مربع الحوار و ذلك للاختيار من الاستعلامات السابق تكوينها
فيمكننا ان نختار من الجداول أو الاستعلامات ، أو كلاهما و ذلك باختيار علامة التبويب الثالثة Both
و لنبدأ بالبداية السهلة ، و نختار جدول واحد فقط ، و ليكن جدول Products
ثم نضغط علي زر close
فنجد نفسنا فى وضع التصميم ، كما فى الشكل التالي :
و هنا نجد الجدول الذي اخترناه يظهر فى الجزء العلوي من الشاشة و لاختيار حل من الحقول اما ننقر عليه نقرا مزدوجا أو نسحبه الي الجزء السفلي بالفأرة
و اختيار الحقل همت يكون لاحد الاسباب الاتية ، أو لأكثر من سبب منها :
· عرض الحقل ضمن الاستعلام : وهذا يتم تحديده بمربع الخيار امام الخانة Show و القيمة الافتراضية عند اختيار حقل هي اظهاره ، و ان لم نرد عرضه ، و أردنا فقط استخدامه لاحد الاسباب التالية ، فلنزيل الاختيار
· الترتيب بالحقل : بحيث يتم ترتيب مجموعة السجلات المكونة للاستعلام بناء علي القيمة الموجودة فى هذا الحقل ، و الترتيب يكون اما تنازلي أو تصاعدي . و القيمة الافتراضية هي عدم الترتيب بناء علي الحقل. و فى حالة عدم اخنيار حقل للترتيب به ، يتم الترتيب بناء علي الفهارس الموجودة . و حال اختيار ترتيب يسود هذا الاختيار علي ترتيب الفهارس .
· وضع معيار علي الحقل : و ذلك من خانة Criteria ، و من الامثلة البسيطة للمعايير ، أن نكتب فى حقل رقمي مثلا :
o =5
o >8
أو في حقل نص
· Is null - لتعريف القيم الخالية
· Like “m*” لتعريف القيم التي تبدأ بحرف m
و آخر خانة فى الحزء السفلي ، هي or و تستخدم كجزء اضافي للمعيار لاضافة أكثر من شرط
و لنبدأ فى تطبيق المثال علي الجدول المرفق فى المثال و المسمي Products
أولا لنختار انشاء استعلام من وضع التصميم
ثم لنختار الجدول
ثم لنحدد اظهار الحقلين
ProductID , Product Name
ثم نحفظ الاستعلام بالاسم الافتراضي Query1
وضع عرض البيانات Datasheet View
و الان لننتقل من وضع التصميم الي وضع العرض datasheet view و ذلك من الايوقنة المظللة بالرسم التالي أو من قائمة View نختار Datasheet view
و بذلك نحصل علي عرض للحقلين فى جميع السجلات الموجودة فى الجدول
و عددها فى المثال 77 حقل ، كما يظهر فى أسفل الرسم
و هنا تم تنفيذ الاستعلام من الواجهة الرسومية ، و لكن هذا ليس هو الاساس ، فالاساس لكي نستطيع التفاعل لاحقا مع الاستعلامات باحتراف هو جملة الSQL التي أدت الي هذا الفعل
و من الان فصاعدا ، بعد تنفيذ أي فعل من الواجهة الرسومية سنتجه الي عرض ال sql لنري الجملة المناظرة
و للانتقال الي عرض ال sql
اما من قائمة View نختار SQL view
أو من الايقون الموضح بالرسم
فنجد جملة ال سي كيو ال المناظرة للاستعلام السابق
الا و هي
SELECT Products.ProductID, Products.ProductName
FROM Products;
و تبدأ بأضهر تعبيرات ال SQL و هي select
و صيغة التعامل معها تكون
Select x ,y,z From Tablename;
حيث x,y,z أسماء الحقول
و نلاحظ هنا أن الأكسس أضاف اسم الجدول قبل اسم الحقل و فصل بينهما بنقطة ، و هذا بسبب امكانية تكرار نفس الاسم فى أكثر من جدول فى استعلام مركب
و تنتهي جدلة الاس كيو ال بفاصلة منقوطة
و لكن هنا يمكن حذف اسم الجدول و النقطة ، حيث لا يوجد تكرار
و سيؤدي ذلك الي نفس النتيجة
لتصبج جملة ال سي كيو ال كالتالي
SELECT ProductID,ProductName
FROM Products;
و لكن بعد حفظ الاستعلام المعدل سيعيد الاكسس كابة اسم الجدول و النقطة
و الآن لنضيف حقل ثالث ، و لكن ليس من خلال تصميم الاستعلام و لكن من خلال جملة السي كيو ال
لنختار إنشاء استعلام جديد من وضع التصميم ، و لكن هذه المرة لا نختار الجدول و انما نغلق شاشة الاختيار دوت اختيار
ثم نذهب الي وضع ال سي كيو ال ، فنجد الجملة التالية
Select;
فلنعدلها الي
Select Productname, Unitprice From Products;
و نحفظ الاستعلام باسم Query2
ثم نفتحه فى وضع العرض لنشاهد السجلات
و هكذا نكون نفذنا أولي الخطوات و هي العرض ، و الجملة المناظرة هي
Select x ,y,z From Tablename;
و الان لنفتح الاستعلام الأخير Query2 فى وضع التصميم ، ثم لنختار الترتيب التنازلي بحقل السعر
و لنفتح الاستعلام فى وضع العرض بعد حفظه طبعا – فنجد أن الترتيب قد تم بحيث أن أول سجل له أكبر قيمة
ثم لنفتحه فى وضع ال SQL لنشاهد الجملة
و هي :
SELECT Products.ProductName, Products.UnitPrice
FROM Products
ORDER BY Products.UnitPrice DESC;
و اذا جعلنا الترتيب تصاعدي
SELECT Products.ProductName, Products.UnitPrice
FROM Products
ORDER BY Products.UnitPrice;
و نفهم من ذلك أن التعبير الثاني فى جمل ال سي كيو ال ، و الذي نستخدمه للترتيب هو Order By
و يأني بعد نتهاء جملة الاختيار ، أي بعد اسم الجدول ، و قبل نهاية الجملة المتمثلة فى الفاصلة المنقوطة
و القيمة الافتراضية للترتيب هي التصاعدي ، و اذا أردنا الترتيب التنازلي فلنضيف كلمة Desc بعد اسم الحقل
و الآن ماذا لو أردنا الترتيب بأكثر من حقل و جعل ترتيب أحدها تصاعدي و الآخر تنازلي
لنعرف ذلك لنضيف ترتيب تنازلي بالاسم فى وضع التصميم الي الترتيب التصاعدي السابق بالقيمة
فتصبح الجملة :
SELECT Products.ProductName, Products.UnitPrice
FROM Products
ORDER BY Products.ProductName DESC , Products.UnitPrice;
أي أن الفاصلة كالعادة هلي الفاصل بين أكثر من وحدة
و بذلك نطزن نعرفنا علي كيفية إنشاء الاستعلام الذي يعرض و يرتب ، و عرفنا كيفية كتابة جملة ال sql المناظرة
و الآن لنضع أول الشروط
لنفتح الاستعلام الاخير
و نحفظه باسم Query3
ثم لنفتحه فى وضه التصميم ، و نضع فى خانة المعيار لحقل ال UnitPrice التعبير التالي
>100
ثم نحفظ الاستعلام
و الآن لنفتح الاستعلام فى وضع العرض
نجد أن السجلات المعروضة هي فقط تلك التي تحقق شرط أن القيمة أكبر من 100
و عددها اثنان ، بدلا من 77
و بعد ذلك لنفتح وضع السي كيو ال ، لنتعرف علي كيفية كتابة الشرط
سنجد الجملة كالتالي :
SELECT Products.ProductName, Products.UnitPrice
FROM Products
WHERE (((Products.UnitPrice)>100))
ORDER BY Products.ProductName DESC , Products.UnitPrice;
اول مت نلاحظه أن جملة الشرط كتبت قبل جملة الترتيب
و أن جملة الشرط هي عبارة عن كلمة Where و يليها الشرط الذي كتبناه
و الأن لنحفظ الاستعلام
ثم ننشيء استعلام جديد خالي مثلما سبق
و ننسخ اليه جملة السي كيو ال السابقة ثم نعدل فى الشرط من خلال السي كيو ال لنختار كل السجلات التي تبدأ ب حرف m
SELECT Products.ProductName, Products.UnitPrice
FROM Products
WHERE (((Products.ProductName) Like "m*”))
ORDER BY Products.ProductName DESC , Products.UnitPrice;
و لنحفظه باسم Query4
القيم المستنتجة و اجراء الحسابات
فى المثال القادم سنقوم بالحصول علي السعر مضافا اليه 25% ، و اطلاق اسم حديد عليه و عرض السجلات علي هذا الاساس
لننشيء استعلام جديد ، و نختار حقل اسم المنتج ، ثم سعره ، ثم فى الخانة التالية نضع التعبير التالي
" mm": [UnitPrice]*1.25
و معناه اظهار حقل جديد غير موجود فى الجدول اسمه mm و القيمة التي تظهر فيه هي عبارة عن السعر مضافا اليه 25%
اذا اذا كان المطلوب اظهار حقل مستنتج نكتب الاسم المطلوب بين علامتي تنصيص "" ثم نضع : نفطتان رأسيتان ثم نكتب القيمة المختارة
او نكتب الاسم ، ثم نختار معالج النساعدة المظلل باللون الاصفر اعلي الشاشة ( المعالج السحري ) للمساعدة فى بناء الجملة أو التعبير المطلوب
ثم كالعادة لنذهب الي وضع ال SQL لنري كيف تم تسجيل ذلك :
SELECT Products.ProductName, Products.UnitPrice, [UnitPrice]*1.25 AS [“mm”]
FROM Products
ORDER BY Products.ProductName DESC;
و الجديد هنا هو تعبير AS الذي استخدم لتعريف الاسم الجديد
و يمكن استخدامه لقيمة مستنتجة أو لمحرد تغيير الاسم
و لنحفظ الاستعلام باسم Query5
لنحفظ نسخة أخري باسم Query6 لنضيف عليها حقل مستنتج آخر اسمه nn لكي يحتفظ بأول حرف من اسم المنتج عن طريق استخدام احدي دوال الاكسس الجاهزة وهي الدالة Left
و هنا سنتكلم فقط عن هذه الدالة كمثال لاستخدام الدوال فى الاستعلام ، و يمكن تصفح باقي الدوال الجاهزة الموجودة الي أن يأتي الحديث عنها .
لنفتح الاستعلام الجديد فى وضع التصميم ثم نضيف فى النهاية كلمة nn ثم : ثم نضغط علي المعالج السحري
و نختار الدوال
Functions
Built-in Functions
Text
و نختار الدالة
Left
و ننقر عليها مرتين
فنجد التعبير التالي قد كتب
nn: «Expr» Left («stringexpr»; «n» )
و المطلوب فقط هو اضافة التعبيرات المطلوبة مكان الكلمات التي هي محاطة ب « »
nn: = Left ( [Products]![ProductName] ; 1(
أي استبدلنا اول « » ب =
و الاخيرة ب 1 : أي حرف واحد فقط من الشمال
و الوسطي نعلم عليها ثم نختار من الجزء الاسفل
Tables
Products
و نختار حقل Product name
ننقر عليه مرتين لكي يدرج فى التعبير
و بذلك يصبح الحقل الجديد nn عبارة عن اول حرف من اسم المنتج
و طبعا يمكن لمن لديه بعض الخبرة مع الدوال ، كتابة التعبير مباشرة دون استخدام المعالج
nn: = Left ( [Products]![ProductName] ; 1(
تجميع أو تلخيص البيانات Grouping Records
و الآن الي تجميع البيانات – أو بمعني آخر تلخيصها
لنفتح الاستعلام الأخير Query6
و لنحفظه باسم Query7
أو لنستخدم النسخ و اللصق مباشرة من اطار قاعدة البيانات ، لانشاء نسخة أخري باسم Query7
ثم لنفتحه فى وضع التصميم ، و لنضغط علي علامة التجميع ( أو سيجما ) المظللة فى الصورة القادمة
و بذلك يتحول الاستعلام من استعلام عادي الي استعلام نجميع
و تظهر خانة اضافية فى الجزء السفلي ، و هي Totals
و فى هذه القيمة علينا أن نختار بين التجميع بهذا الحقل Group By أو اجزاء احدي العمليات عليه مثل العد و الجمع و المتوسط ... و التي ستظهر لك فى القائمة و الآن
لنحذف ProductName من الحقول المخترة
و نختار قيم الحقول الاخري فى خانة Totals كما فى الصورة :
Nn: للتجميع به
و الحقلان الآخران نحصل منهما علي المجموع
أي أننا هنا نحصل علي مجموع الفئات و مجموع الفئات بعد اضافة 25% لكل المنتجات التي تبدأ بحرف معين
و كالعادة سنذهب الي وضع السي كيو ال
فنجد الآتي :
SELECT Sum(Products.UnitPrice) AS SumOfUnitPrice, Sum([UnitPrice]*1.25) AS [" mm"], Left([Products]![ProductName],1) AS nn
FROM Products
GROUP BY Left([Products]![ProductName],1);
و طبعا الزائر الجديد لنا هو Group By أي الحقل الذي نقوم بالتجميع به
و هنا نجد أننا أحرينا الاستنتاج ثم جمعنا السجلات بناء علي القيم المستنتجة فى خطوة واحدة
و طبعا كان من الممكن عمل ذلك علي خطوتين ، الاستنتاج فى استعلام ، ثم عمل التجميع فى استعلام جديد مينب علي الاستعلام الأول .
و يبقي لنا التعرف علي ترتيب ال Group BY فى حالة وجود شرط أو ترتيب
لذلك سنحفظ نسخة أخري من Query7 باسم Query8 لنضيف اليها شرط و ترتيب
ليصبح الاستعلام الشامل كالتالي :
SELECT Sum(Products.UnitPrice) AS SumOfUnitPrice, Sum([UnitPrice]*1.25) AS [" mm"], Left([Products]![ProductName],1) AS nn
FROM Products
GROUP BY Left([Products]![ProductName],1)
HAVING (((Sum([UnitPrice]*1.25))>50))
ORDER BY Left([Products]![ProductName],1);
و نلاحظ أنه في حالة التجميع تحول تعبير الشرط من Where الي Having
و أن الترتيب بعد الاختيار هو
· Group
· Having
· Order By
و بدون التجميع
· Where
· Order By
و أن Select دائما فى المقدمة
و هكذا نكون تعرفنا علي كلمات السي كيو ال التي تستخدم فى استعلام الاختيار ، و أيضا علي كيفية التعامل مع استعلامات الاختيار من خلال الواجهة الرسومية للاكسس و من خلال كتابة و تعديل جمل ال سي كيو ال.
لدينا الآن ثمانية مجموعات من السجلات التي نمثل حالات اختيار و ترتيب من الجدول الاصلي ، يمكننا فتحها و استخدامها فى أي وقت
و كل ما تم تخزينه فى قاعدة البيانت هي الثمانية جمل اس كيو ال السابقة ، و التي تمثل الثمانية استعلامات
أي أنه لم يتم تكرار الجدول ، و انما تم تخزين هذه الجمل فقط ليتم إسترجاع البيانات بناء عليها من الجدول الأصلي
الجزء الثاني : من هنا
----