سؤال

لقد حاولت بضعة نهج تحديث عمود في قاعدة بيانات mySQL جدول من جدول آخر ولكن أنا ليس لدي أي حظ.

قرأت في مكان ما أن الإصدار 3.5.2 لا تدعم multi-table التحديثات و اريد الحل القائم على هل ذلك صحيح ؟

إذا لا يمكن لأي أحد أن لي نقطة في الاتجاه الصحيح باستخدام sql ؟

UPDATE products SET products_ordered = (
    SELECT SUM(products_quantity) 
    FROM orders_products 
    WHERE products_id = products.products_id
);

أو:

Create temporary table my_temp_table
as
SELECT products_id, SUM(products_quantity) as total 
FROM orders_products 
GROUP BY products_id 

UPDATE products, my_temp_table
SET products.products_ordered = my_temp_table.total 
WHERE products.products_id = my_temp_table.products_id
هل كانت مفيدة؟

المحلول

عندما كنت استخدام الخلية التي لا تدعم إما الاستعلامات الفرعية أو متعددة الجدول التحديثات, أنا استخدم خدعة أن تفعل ما كنت تصف.تشغيل استعلام النتائج التي هي في حد ذاتها البيانات SQL ثم حفظ الناتج وتشغيل أن برنامج نصي SQL.

SELECT CONCAT( 
  'UPDATE products SET products_ordered = ', 
   SUM(products_quantity), 
  ' WHERE product_id = ', products_id, ';') AS sql_statement
FROM orders_products
GROUP BY products_id;

بالمناسبة لا يوجد مثل هذا MySQL الإصدار 3.5.x بقدر ما أعرف.أعتقد أنك قد ذكرت أن من الخطأ.أو آخر كنت تستخدم منتج آخر مثل mSQL.

تحرير: نسيت أن أضيف الفاصلة المنقوطة في جملة SQL التي تم إنشاؤها بواسطة الاستعلام أعلاه.

نصائح أخرى

والتحديثات الجدول متعددة لا يتم دعم في الخلية <= 4.0.4 سأكون في غاية يوصي لتحديث الخادم الخاص بك إلى الخلية 5.0.xx

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top