استعلامات التوحيد

    Union Queries

إعداد : محمد طاهر

 

 

5- استعلامات الاس كيو ال  SQL-specific query

 هذه الانواع من الاستعلامات التي  تسمي استعلامات الاس كيو ال المحددة او  SQL-specific queries   تنقسم الي :

 

 

و قد تعرضنا الي شرح استعلامات التوحيد ، فى الموضوع السابق ، و سنعرض هنا  الي الأنواع الباقية :

 و بهذا الموضوع نكون استكملنا الجزء الخاص بالاستعلامات فى الأكسس فى الدورة .

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

 

لانشاء الاستعلام نفتح استعلام جديد فى وضع التصميم

ثم لا نختار أي جدول

ثم من قائمة Queries

نختار

SQL Specific

Data Definition

فتتحول الشاشة الي وضع كتابة تعبير الاس كيو ال

فنكتب فيه جملة الاستعلام

 

و تعتمد صيغة الجملة علي التعبيرات الآتية :

 

SQL statement الغرض
CREATE TABLE لإنشاء جدول
ALTER TABLE إضافة حقل أو تعديل فى جدول موجود
DROP لحذف جدول من قاعدة البيانات ، أو حذف فهرس من حقل أو مجموعة حقول
CREATE INDEX لإضافة فهرس الي حقل أو مجموعة حقول

 

و المثالان التاليان و الموجودان فى الملف المرفق باسم Q1 & Q2

من ملف التعليمات ، و الباقي إضافة لتجربة باقي الأوامر ( خمسة أمثلة أخري )

 

يستخدم استعلام تعريف البيانات التالي جملة CREAT TABLE لإنشاء جدول يسمى "أصدقاء". تحتوي الجملة على الاسم ونوع البيانات لكل حقل في الجدول وتعّين فهرساً لحقل "معرف الحقل" يميزه كمفتاح أساسي.

 

CREATE TABLE Friends
 
([FriendID] integer,
 
[LastName] text,
 
[FirstName] text,
 
[Birthdate] date,
 
[Phone] text,
 
[Notes] memo,
 
CONSTRAINT [Index1] PRIMARY KEY ([FriendID]));
 

المثال الثاني :

يستخدم استعلام تعريف البيانات هذا جملة CREATE INDEX لإنشاء فهرس متعدد الحقول على أساس الحقلين "الاسم الأخير" و"الاسم الأول" للجدول المسمى "أصدقاء".

 

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;


 

 

 

هي لا تمثل نوع جديد من الاستعلامات ـ  و لكنها عبارة عن استعمال لاستعلام تحديد لايجاد قيمة بناء علي جملة اس كيو ال لاستخدامها اما كمعيار لحقل ، أو كقيمة مستنتجة فى استعلام آخر سواء كان هذا الاستعلام الأخر  استعلام تحديد أو إستعلام إجرائي.

 

فى كلتا الحالتين سيتم كتابة تعبير الاس كيو ال داخل أقواس  ( )

 

لنتكلم أولا عن حالة المعيار

 

لنفرض أن لدينا جدول للمنتجات

و جدول لتصنيف المنتجات

و نريد عمل استعلام علي جدول المنتجات فقط بدون ادراج جدول التصنيف و استخدام علاقة مباشرة  مع جدول المنتجات

بحيث نـعرض المنتجات التي تصنيفها وصفه يبدا بحرف ال 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 بالحقل الذي تم انشاؤه بهذه الطريقة

لا يمكن اختيار جملة الاس كيو ال كاستعلام جدولي

 

 

هو استعلام يقوم بارسال الاوامر الي قاعدة بيانات من نوع 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   اذا كان الاستعلام من النوع الذي يعرض البيانات.

و للعودة الي وضع التصميم ثانية نضغط علي   

 

 

 

 

===========

تم

==========