تحديث عمود من جدول آخر - الخلية 3.5.2
-
03-07-2019 - |
سؤال
لقد حاولت بضعة نهج تحديث عمود في قاعدة بيانات 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