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

مشاهدة النسخة كاملة : [دروس تقليل الاستعلامات] - استعلام الـ update لأكثر من جدول واكثر من قيمة


مبرمج
02-05-2009, 07:24 AM
بسم الله الرحمن الرحيم

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

اعزائي الاعضاء سبق وشرحت طريقة استخدام SELECT لأكثر من من جدول وقيمة باستعلام واحد.. تجدون الدرس هنا "http://www.swalif.net/softs/swalif45/softs254414/"

اعزائي لا اريد الاطاله في الشرح.. ولكن في المقابل سأحرص على الا يكون هناك اي نقطه غير واضحه


القاعده:
كود:
UPDATE
table_1 prefix_1,
table_2 prefix_2,
table_3 prefix_3,
...
SET
prefix_1.field_1 = 'YOUR_DATA' ,
prefix_2.field_2 = 'YOUR_DATA' ,
prefix_3.field_3 = 'YOUR_DATA' ,
...
WHERE
prefix_1.field_4 = 'SOMETHING' AND
prefix_2.field_5 = 'SOMETHING' AND
prefix_3.field_6 = 'SOMETHING' AND
...
وبفرض اننا نمل الجداول الثلاث التاليه:
categories

cat_id
cat_total_books

books

book_id
book_author_id
book_cat_id

authors

author_id
author_total_books

واردنا نقل الكتاب صاحب المعرف رقم 3
من القسم 4 الى القسم 5
ومن المؤلف 6 الى المؤلف 7
ويترتب على ذلك ان عدد الكتب الموجوده في القسم 4 قد نقصت كتاب
وزاد القسم 5 كتاب لذلك يجب تحديث العدادات الموجوده فيها وذلك بـ
طرح 1 من القسم 4
وزيادة 1 الى القسم 5
وكذلك هو الحال بالنسبة لجدول المؤلفين فقد نقص المؤلف 6 كتاب
وزاد المؤلف 7 كتاب لذلك علينا ايضا تحديث جدول المؤلفين بعمل التالي
طرح 1 من المؤلف 6
وزيادة 1 الى المؤلف 7

فتخيل ان عملت كل ذلك باستعلامات عاديه.. فكم عدد الاستعلامات؟
1 لتعديل القيم الموجوده في جدول الكتب
1 لانقاص 1 من جدول الاقسام
1 لزيادة 1 لجدول الاقسام
1 لانقاص واحد من جدول المؤلفين
1 لزيادة 1 لجدول المؤلفين
اي قمت بعمل 5 استعلامات.. بينما يمكنك الوصول لنفس النتيجه باستعلام واحد..
تابع معي من فضلك..


فبتطبيق القاعده يكون شكل الاستعلام كالتالي
كود PHP:
UPDATE
categories cat_new,
categories cat_old,
authors auth_new,
authors auth_old,
books bks
SET
bks.book_cat_id = 5 ,
bks.book_author_id = 7 ,
cat_new.cat_total_books = cat_new.cat_total_books+1 ,
cat_old.cat_total_books = cat_old.cat_total_books-1 ,
auth_new.author_total_books = auth_new.author_total_books+1 ,
auth_old.author_total_books = auth_old.author_total_books-1
WHERE
bks.book_id = 3 AND
cat_old.cat_id = 4 AND
cat_new.cat_id = 5 AND
auth_old.author_id = 6 AND
auth_new.author_id = 7



لاحظ
كود:
categories cat_new,
categories cat_old,
اسمينا الاول بالجديد والثاني بالقديم وذلك لكي نتمكن من تحديث عداد القسم الجديد وعداد القسم القديم..
فالجديد هو الذي حصلت به زياده.. والقديم هو ما حصل به نقصان.. وبذلك نتمكن من زيادة وطرح مانريد بما اننا استطعنا فصلهم
فيكون:
كود:
cat_new.cat_total_books = cat_new.cat_total_books+1 ,
cat_old.cat_total_books = cat_old.cat_total_books-1 ,
مع انهم في الواقع نفس الحقل ولكن كيف سيعلم الخادم اننا نريد انقاص واحد من القسم 4 واضافة واحد الى القسم 5؟؟
ذلك يكون بالشرط الذي وضعناه
كود:
cat_old.cat_id = 4 AND
cat_new.cat_id = 5 AND
فعمليتا التحديث + الشرط يكونان مبنيان على الاسم الذي سبق ووضعناه امام الجدول كما فعلنا هنا
كود:
categories cat_new,
categories cat_old,

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


والدرس القادم ان شاء الله سيكون عمل احصائيات لعدة جداول وقيم باستعلام واحد

بالتوفيق