هذه الانواع من الاستعلامات التي تسمي استعلامات الاس كيو ال المحددة او SQL-specific queries تنقسم الي :
استعلامات تعريف البيانات data-definition
استعلامات التوحيد union queries
الاستعلامات الفرعية sub queries
استعلام التمرير pass-through
و قد تعرضنا الي شرح استعلامات التوحيد ، فى الموضوع السابق ، و سنعرض هنا الي الأنواع الباقية :
و بهذا الموضوع نكون استكملنا الجزء الخاص بالاستعلامات فى الأكسس فى الدورة .
و قبل أن ندخل فبه أرجو ممن يعتبر جديدا فى التعامل مع الاكسس الا يتوقف كثيرا مع هذا الموضوع أن وجد صعوبة فيه ، فقد لا يتعرض كثيرا الي التعامل مع كثير مما فيه سواء لعدم الحاجة ، أو و لوجود بدائل أخري لتنفيذ نفس المهام .كما سنري لاحقا بإذن الله.
استعلامات تعريف البيانات Data-Definition Queries
لانشاء الاستعلام نفتح استعلام جديد فى وضع التصميم
ثم لا نختار أي جدول
ثم من قائمة Queries
نختار
SQL Specific
Data Definition
فتتحول الشاشة الي وضع كتابة تعبير الاس كيو ال
فنكتب فيه جملة الاستعلام
و تعتمد صيغة الجملة علي التعبيرات الآتية :
SQL statement | الغرض |
---|---|
CREATE TABLE | لإنشاء جدول |
ALTER TABLE | إضافة حقل أو تعديل فى جدول موجود |
DROP | لحذف جدول من قاعدة البيانات ، أو حذف فهرس من حقل أو مجموعة حقول |
CREATE INDEX | لإضافة فهرس الي حقل أو مجموعة حقول |
و المثالان التاليان و الموجودان فى الملف المرفق باسم Q1 & Q2
من ملف التعليمات ، و الباقي إضافة لتجربة باقي الأوامر ( خمسة أمثلة أخري )
CREATE INDEX NewIndex
ON Friends ([LastName], [FirstName]);
و لتنفيذالاستعلام نختار تنفيذ
الاستعلام من علامة التعجب الحمراء
و للعودة الي وضع التصميم ثانية نضغط علي
و بتنفيذ الاستعلام الأول سيتم إنشاء الجدول و اضافة المفتاح له ، و بتنفيذ الثاني سيتم اضافة فهرس الي كل من الحقلين الموضحين به
و الان لنجرب الامر DROP كما فى الاستعلام Q3 ، لحذف الجدول الذي تم إنشاؤه
DROP
TABLE Friends;
سيتم حذف الجدول
و الان لنعيد تنفيذ q1,q2 لانشاء الجدول و الفهارس ، و ذلك لكي نستخدم أمر Drop فى حذف الفهرس المضاف المسمي NewIndex كما فى الاستعلام المسمي q4.
DROP
INDEX NewIndex
ON Friends ;
بقي لنا امر Alter و هو المستخدم فى تعديل جدول موجود ، فمثلا سنضيف حقل جديد الجدول و اسم الحقل طاهر و نوعه نص و طوله 20 ( استعلام q5)
ALTER
TABLE Friends
ADD
Taher text(20);
و لحذف الحقل المضاف حديثاً : ( Q6 )
ALTER
TABLE Friends
DROP
Taher ;
و أخيرا سنعيد اضافة الحقل مع جعله فريد أي
indexed duplicate=no
ALTER
TABLE Friends
ADD
Taher text(20) CONSTRAINT exb_unique UNIQUE;
الاستعلامات الفرعية sub queries
هي لا تمثل نوع جديد من الاستعلامات ـ و لكنها عبارة عن استعمال لاستعلام تحديد لايجاد قيمة بناء علي جملة اس كيو ال لاستخدامها اما كمعيار لحقل ، أو كقيمة مستنتجة فى استعلام آخر سواء كان هذا الاستعلام الأخر استعلام تحديد أو إستعلام إجرائي.
فى كلتا الحالتين سيتم كتابة تعبير الاس كيو ال داخل أقواس ( )
لنتكلم أولا عن حالة المعيار
لنفرض أن لدينا جدول للمنتجات
و جدول لتصنيف المنتجات
و نريد عمل استعلام علي جدول المنتجات فقط بدون ادراج جدول التصنيف و استخدام علاقة مباشرة مع جدول المنتجات
بحيث نـعرض المنتجات التي تصنيفها وصفه يبدا بحرف ال m
و كما قلنا لا نريد التعامل من خلال العلاقة بين الجدولين أي نريد الاستعلام فقط مبني علي جدول المنتجات و نريد الشرط فيه علي اساس الوصف فى جدول التصنيفات
أولا نعد الاستعلام العادي لعرض المنتجات بصورة طبيعية q9
SELECT Products.ProductName,
Products.CategoryID
FROM Products;
و نعد استعلام مؤقت لعمل الشرط علي الجدول الاخر q10
SELECT Categories.CategoryID
FROM Categories
WHERE (((Categories.CategoryName) Like "m*"));
ثم نضع الشرط بين قوسين و ننسخه الي خانة المعييار لحقل ال CategoryID فى الاستعلام الاول
ليصبح : q11 كالتالي :
SELECT Products.ProductName,
Products.CategoryID
FROM Products
WHERE (((Products.CategoryID)=(SELECT
Categories.CategoryID FROM Categories
WHERE (((Categories.CategoryName) Like "m*"));)));
و بذلك نكون وضعنا شرطا فى جدول المنتجات علي حقل التصنيف ، بناء علي شرط فى حقل وصف التصنيف الموجود فى جدول التصنيفات دون استخدام لعلاقة بينهما أو ادراج الجدول الاخر فى الاستعلام
و الان لنتكلم عن الحالة الثانية و هي حالة حقل اختيار مستنتج بناء علي جملة الاس كيو ال
و الان أيضا كبديل عن العلاقة بين الجدولين ، نريد اظهار وصف التصنيف المناظر لكل منتج فى استعلام برغم أن الوصف موجود فى جدول التصنيفات
اذا الحقل المراد اضافته يمكن وصفه كالتالي
وصف التصنيف لكل منتج من منتجات جدول المنتجات ، علي أساس أن رقم التصنيف للمنتج = رقم الوصف فى جدول التوصيف
أي
SELECT Categories.CategoryName
FROM Categories
WHERE
(((Categories.CategoryID)=[Products]![CategoryID]));
كما فى الاستعلام رقم q12
و الذي لبناؤه سنقوم بعمل استعلام تحديد لاختيار حقل الاسم ، ثم نضيف حقل رقم التصنيف لاختياره كمعيار فقط دون اظهاره
ثم عن طريق المعالج نختار حقل كود التصنيف من جدول المنتجات كمعيار لكود التصنيف
ففقي وضع التصميم للاستعلام رقم Q9 نحفظ الاستعلام باسم جديد هو Q13
نختار حقل جديد و نفتح قوس و ننسخ فسه جملة اختيار وصف التصنيف ثم نغلق القوس
فنجد أن الاكسس اضاف تلقائيا اسم للتعبير الجيد هو مثلا Expr1:
فنغيره لما نريد و ليكن مثلا TTT
فيصبح المثال كالتالي :
SELECT
Products.ProductName, Products.CategoryID, (SELECT Categories.CategoryName
FROM Categories
WHERE
(((Categories.CategoryID)=[Products]![CategoryID]));) AS
TTT
FROM Products;
و هكذا نكون أضفنا حقل وصف التصنيف من جدول التصنيف الي استعلام مبني علي جدول المنتجات فقط دون الحاجة لعلاقة بينهما
ملاحظات :
لا يمكن عمل عملية تجميع Grouping بالحقل الذي تم انشاؤه بهذه الطريقة
لا يمكن اختيار جملة الاس كيو ال كاستعلام جدولي
استعلام التمرير pass-through
هو استعلام يقوم بارسال الاوامر الي قاعدة بيانات من نوع ODBC . أي قاعدة بيانات يوجد لها محرك Open Database Connectivity أي محرك الاتصال المفتوح بين قواعد البيانات المختلفة . و ذلك لربط أو استيراد أو تصدير البيانات الي قاعدة أخري مثل قاعدة بيانات من نوع فوكس برو مثلا .
أي أنه يستخدم للاتصال بقواعد بيانات أو بخوادم قواعد بيانات أخري غير الأكسس .
وهو الأقل استخداما بين أنواع الاستعلامات ، وقد لا تتعرض لاستخدامه و أنت تعد تطبيق الاكسس الا اذا أردت التصال بانواع أخري من قواعد البيانات .
لانشاء الاستعلام نفتح استعلام جديد فى وضع التصميم
ثم لا نختار أي جدول
ثم من قائمة Queries
نختار
SQL Specific
pass-through
فتتحول الشاشة الي وضع كتابة تعبير الاس كيو ال
ثم نختار أيقونة الخصائص
فنكتب فيه جملة الاتصال
بالخادم فى ODBC ConnectStr أو
نستخدم الاختيار من .
فينفتح مربع حوار لاختيار مصدر البيانات المراد الاتصال به من خلال مصادر ال
ODBC .
و نختار علامة التوبيب الثانية Machine Data Source ثم نختار نوع وصلة ال ODBC من بين انواع التطبيقات المختلفة التي ستظهر لك
و لنفرض أنك للسهولة تريد تطبيقها مع الاكسس ، فتختار visual fox pro مثلا ، و أيضا يمكنك تعريف محرك اتصال جديد غير الظاهرين فى القائمة من زر new
بعد اختيار محرك ال ODBC الخاص بالفوكس برو ، سيظهرمربع حوار لتحديد مكان القاعدة أو مجلد الجداول .
و يمكنك حفظ اسم المستخدم و كلمة السر ضمن جملة الاتصال بالاجابة باقبول فى الرسالة التي ستظهر .
مثال لوصلة ال للتصال مع برنامج ال Expedition مع حفظ كلمة السر فى الوصلة
ODBC;DSN=EXPWIN
حيث EXPWIN هو اسم وصلة ال ODBC .
و لتحرير هذه الوصلة و تعديل خصائصها يمكنك عمل ذلك من لوحة التحكم الخاصة بالويندوز
فى الويندوز اكس بي
Control Pannel
Performance and maintenance
Adminstrative Tools
Data Sources ODBC
لها وصلة مباشرة داخل لوحة التحكم فى ويندوز 98
و ستجد العديد من الخصائص للتحكم فى وصلة ال ODBC و طبعا هذ1 ليس مجالنا هنا فى الأكسس .
و اذا لم تقم بحفظ جملة الوصلة سيقوم اكسس افتراضيا باضافة "ODBC;". و سيسألك عن الوصلة عند كل تشغيل للاستعلام.
وأيضا من خصائص الاستعلام ، اذا كان الاستعلام لن يعيد سجلات ( يعرض سجلات ) فقم بتغيير خاصية ReturnsRecords الي no
و أخيرا فى شاشة الاستعلام نكتب جملة الاس كيو الي الخاصة بالاستعلام ، اما عن جملة الاستعلام نفسها فهي ستتيع طريقة كتابة جمل الاس كيو ال فى القاعدة التي تريد التصال بها و أيضا ستكون متعلقة بتصميم القاعدة نفسها . و لتفاصيل الكتابة فى البرامج المختلفة ، عليك مراجعة مستندات التعليمات فى قاعدة البيانات التي تتصل بها . أما ما سبق فهو اعداد لوصلة الاتصال بطريقة ال ODBC.
و لتنفيذ الاستعلام نختار تنفيذ الاستعلام من علامة
التعجب الحمراء
أو نختار عرض البيانات فى وضع العرض datasheet view
اذا كان
الاستعلام من النوع الذي يعرض البيانات.
و للعودة الي وضع التصميم ثانية نضغط علي
===========
تم
==========