النتائج 1 إلى 4 من 4

الموضوع: [دروس تقليل الاستعلامات] - استعلام الـ UPDATE لأكثر من جدول واكثر من قيمة

  1. #1
    عضو نشيط
    تاريخ التسجيل
    Aug 2007
    المشاركات
    73

    [دروس تقليل الاستعلامات] - استعلام الـ UPDATE لأكثر من جدول واكثر من قيمة



    بسم الله الرحمن الرحيم

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

    اعزائي الاعضاء سبق وشرحت طريقة استخدام 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 
        
    bks.book_author_id 
        
    cat_new.cat_total_books cat_new.cat_total_books+
        
    cat_old.cat_total_books cat_old.cat_total_books-
        
    auth_new.author_total_books auth_new.author_total_books+
        
    auth_old.author_total_books auth_old.author_total_books-
    WHERE 
        bks
    .book_id AND 
        
    cat_old.cat_id AND 
        
    cat_new.cat_id AND 
        
    auth_old.author_id AND 
        
    auth_new.author_id 
    لاحظ
    كود:
    	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,

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


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

    بالتوفيق





    __________________
    مملكة الموت
    =======================
    100(سبحان الله وبحمده ،،، سبحان الله العظيم) = 0 سيئة


  2. #2
    عضو سوبر نشيط
    تاريخ التسجيل
    Mar 2003
    المشاركات
    790


    كما في" الدرس " السابق .. يجب فهم طبيعة الـAlgebra Expressions للقيام بعمليات الـOptimization لأنها أساس الـSQL و أية لغة استعلامات أخرى .. وضع الـQuery في جملة واحدة لا يعني حدوث Query Optimization
    فيمكن وضع بعض الأوامر مثل (EXCEPT , CONTAIN ) *أو غيرها من الأوامر المرهقة للسيرفر في جملة واحدة .. !!

    Dr.no

    *توجد في SQL-99





    __________________
    دكتور لا

  3. #3
    عضو نشيط جدا
    تاريخ التسجيل
    Jan 2008
    المشاركات
    553


    بورك فيك





    __________________
    اللهم اغفر لي الذنوب التي تهتك العصم
    اللهم اغفر لي الذنوب التي تنزل النقم
    اللهم اغفر لي الذنوب التي تغير النعم
    اللهم اغفر لي الذنوب التي تحبس الدعاء
    اللهم اغفر لي الذنوب التي تنزل البلاء .

  4. #4


    بارك لاله فيك و الله





    __________________
    كن حكيم في استخدام عقلك





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض