تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
SQL Update
#3
(06-11-22, 07:53 AM)Taha Okla كتب : صباح النور :

فكرة للحل : 
في الحال (id1) هو ترقيم تلقائي متتالي ولا يتكرر.

- أن تجد id1 الـ (id) سجل الحركة الذي تم تعديله للمادة item_1.
- أن تجد id2 الـ (id) السجل للحركة التالية للمادة item_1.

- تعطي أمر تعديل التكلفة للمادة item_1 بشرط : id أكبر من id1  وأصغر من id2

يمكن الاستفادة أيضاً من حقل تاريخ الحركة بشرط أنه يخزن التاريخ و الوقت بالدقيقة والثانية(بنفس الطريقة السابقة بدلاً من id).

صباح الورد شكرا لك على الرد:
هذا الحل بسيط جدا الأمر معقد أكثر من ذلك
موجود أكثر من 300 ألف سجل والعدد مستمر بالزيادة يوميا بمقدار 2500 - 4000 سجل جديد
والعملية لازم تكون على كل الجدول ولكل الأصناف

الحل يلي انا عملته عن طريق جمل loop لكل صنف ضمن الكود البرمجي VB وليس ضمن الـ SQL
ولكن مع كثرة الأصناف وكثرة السجلات حلقات التكرار أًصبحت بطيئة ومتعبة وغير مجدية

المطلوب هو جملة SQL متقدمة تقوم بعمل التعديل على الجدول بأكمله بوقت قصير جدا

إليك الكود التالي وهو مستخدم لحساب الرصيد النهائي للمادة بعد كل عملية
وعند القيام بأي تعديل بأي مكان في الجدول يقوم باحتساب الرصيد الجديد ويقوم بالتصحيح لكل السجلات بسرعة كبيرة

كود :
UPDATE d
                                                   SET net_Inventory_Qty =  t.cumqty
                                                   FROM tb_Inventory d
                                               JOIN tb_Inventory i ON d.item_GUID = i.item_GUID
                                               JOIN ( SELECT id, item_GUID,SUM(bill_Qty) OVER ( PARTITION BY item_GUID ORDER BY full_date_time ) AS 'cumQty'

                                               FROM tb_Inventory) t ON t.id = d.id;

                                               UPDATE v
                                               SET S_net_Inventory_Qty =  t.cumqty
                                               FROM tb_Inventory v
                                               JOIN tb_Inventory i ON v.item_GUID = i.item_GUID and i.store_id = v.store_id

                                               JOIN tb_Inventory iv ON  iv.store_id = v.store_id

                                               JOIN ( SELECT id, item_GUID,store_id , SUM(bill_Qty) OVER ( PARTITION BY item_GUID , store_id  ORDER BY full_date_time )
                                               AS 'cumQty' FROM tb_Inventory) t ON t.id = v.id and t.store_id = v.store_id
الرد }}}
تم الشكر بواسطة:


الردود في هذا الموضوع
SQL Update - بواسطة Bashar_123456 - 05-11-22, 09:18 PM
RE: SQL Update - بواسطة Taha Okla - 06-11-22, 07:53 AM
RE: SQL Update - بواسطة Bashar_123456 - 06-11-22, 09:18 AM
RE: SQL Update - بواسطة Taha Okla - 06-11-22, 04:22 PM
RE: SQL Update - بواسطة Bashar_123456 - 06-11-22, 08:38 PM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [سؤال] هل من كود لعمل update set لبيانات الجدول من الداتا جريد احمد عبد الحكيم 7 4,205 18-12-15, 06:55 PM
آخر رد: احمد عبد الحكيم
  [VB.NET] وضع متغير فى جملة Update mathmagic 3 3,658 25-10-15, 10:20 AM
آخر رد: mathmagic
  مشكلة في Update benomar 2 2,425 12-10-14, 03:10 PM
آخر رد: benomar
  [كود] Update sql table m7md2991 3 3,037 28-09-13, 12:43 PM
آخر رد: m7md2991
  Update image in MS Access eng.khalidvb 0 1,949 30-08-13, 05:19 PM
آخر رد: eng.khalidvb

التنقل السريع :


يقوم بقرائة الموضوع: