15-08-2020, 12:00 PM (آخر تعديل لهذه المشاركة: 15-08-2020, 12:14 PM بواسطة samnaj00.)
السلام عليكم ورحمة الله وبركاته
السادة الكرام
لدي جدول1 فيه اعمدة (رقم المادة-اسم المادة -رصيد المادة) ID_PROD-NAME_PROD-RASEED (عدد المواد 100)
جدول2 فيه اعمدة (رقم المادة-الكمية) ID_PROD-QTY (عدد السجلات 14000 سجل)
لكي احصل على رصيد كل مادة ووضعه في جدول1 . كتبت جملة ال update التالية:
كود :
update Table1 set raseed = (select sum(Table2.qty) from Table2 where Table1.id_prod = Table2.id_prod)
الكود يعمل بشكل جيد
لكن المشكلة في بطء النتيجة (10ثواني تقريباً) وهذا يعد عيباً كبيراً
كوني محاسباً واعمل على برنامج محاسبة بقاعدة بيانات برادوكس و1800 مادة و14000 سجل والامر لايستغرق كبسة الزر فقط
جربت قاعدة بيانات absolute و bde و access والنتيجة واحدة
و عليكم السلام و رحمة الله و بركاته
لما لا تستعمل حقل حسابي (CalculatedField) و تستغني عن تعليمة الـ Update. شيء مثل :
كود :
SELECT Table1.ProdID, Table1.ProdName, Sum(Table2.Quantity) AS TotalQuantity FROM Table1 INNER JOIN Table2 ON Table1.ProdID = Table2.ProdID GROUP BY Table1.ProdID, Table1.ProdName;
من قال حاد عن أصله أو قال مات فقد كذب
كل من 1 user says قال شكرا ل h-farid على المشاركة المفيدة1 user says Thank You to h-farid for this post • samnaj00
(17-08-2020, 10:50 AM)h-farid كتب : و عليكم السلام و رحمة الله و بركاته
لما لا تستعمل حقل حسابي (CalculatedField) و تستغني عن تعليمة الـ Update. شيء مثل :
كود :
SELECT Table1.ProdID, Table1.ProdName, Sum(Table2.Quantity) AS TotalQuantity FROM Table1 INNER JOIN Table2 ON Table1.ProdID = Table2.ProdID GROUP BY Table1.ProdID, Table1.ProdName;
استاذي الكريم جزاك الله خيراً
هذا ينفع في حال اردت اظهار البيانات والمجاميع فقط دون تعديل او اضافة
لكن الجدول الاول فيه (اضافة -تعديل ) مباشرة
هل يمكن تعديل جملة الاسكيول لكي يتم تطبيقها على عمود رصيد المادة؟
17-08-2020, 04:19 PM (آخر تعديل لهذه المشاركة: 17-08-2020, 04:20 PM بواسطة samnaj00.)
(17-08-2020, 12:54 PM)B.M.AbdelAziZ كتب :
و عليكم السلام و رحمة الله و بركاته
أكتب الكود الكامل المستعمل وليس فقط جملة الإستعلام (إن أمكنك إرفاق مثال لكان أحسن) حتى يمكن توجيهك لمكان الخلل.
لا يوجد سوى هذه الجملة فقط
كود :
update daleel_prod set raseed = (select sum(prod.qty_in) from prod where daleel_prod.id_prod = prod.id_prod)
لم تعمل جملة sql لقاعدة بيانات اكسس طلب عمل استعلام تحديث
في المرفقات نموذجين (bde - absolute ) مع exe - ضع المجلدين في القرص c
18-08-2020, 10:46 AM (آخر تعديل لهذه المشاركة: 18-08-2020, 10:48 AM بواسطة samnaj00.)
استاذي الكريم سفيان
جزاك الله كل خير على المشاركة
(17-08-2020, 09:27 PM)sofiane201 كتب :
عموما الجداول تبدو غير مركبة بشكل جيد, مثلا لا يوجد مفتاح خارجي في الجدول prod, ربما لأنك تستخدم absolute db؟ لانه لا يحتوي عليها وهو أمر غريب.
ماهو المفتاح الخارجي ؟
(17-08-2020, 09:27 PM)sofiane201 كتب : جربت نفس مثالك على قاعدة ب SQLite, والفارق كبير جدا في السرعة, لم يأخذ أكثر من ثانية ونصف عندي حتى بدون استخدام فهرس.
ذكرت في مشاركاتي أني جربت على sql server وكانت النتيجة بكبسة زر فقط مع 2000 في daleel_prod و20000 سجل في prod
(17-08-2020, 09:27 PM)sofiane201 كتب : الحل: غير قاعدة البيانات, حاول الالتزام بأساسيات SQL في انشاء الجداول.
يمكن تغيير قاعدة البيانات لكن الذي يدفعني للبحث عن حل بدلاً من تغيير القاعدة . هو مثال حي لدي وهو برنامج محاسبة اعمل عليه بقاعدة برادوكس دلفي7 وبأقل من ثانية يتم تحديث الرصيد