الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

دمج عدة سجلات بشروط محددة

بدأه MohdRabee في 27 أغسطس 2008 · 3 رد · 1,218 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

كيف يمكن دمج عدة سجلات باستخدام Query

بحسب شروط محددة مثال:

لدي قاعدة بيانات تتضمن الحقول التالية:

الاسم الاول - الاسم الثاني - المدينة - رقم الهاتف - رقم الفاكس - المبلغ المستحق - الكميات

كيف يمكنني جمع السجلات التي تتضمن في الاسم الاول: خالد والاسم الثاني: صلاح

وجمع مايقابلها من سجلات (المبلغ) و (الكميات)

بدون اي اهتمام للحقول الاخرى

سوف تكون عبارة عن سجل واحد يتضمن مجموع الكميات و المبلغ المستحق والاسم الاول والثاني

ونفس الشيء للسجلات التالية

تحياتي لكم

#2

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

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

لديك إمكانيه بإسدام ملف query داخل الدتا مودل

EDIT1.TEXT:='خالد';

EDIT2.TEXT:='منصور';

وتضع فيه(SQL) النص التالي

DM.query.CLOSE;

DM.query.SQL.CLEAR;

DM.query.SQL.ADD('SELEC NAME1,NAME2, sum( QMONY ) as QM, sum( QUNTTY ) as QNT FROM (إسم الملف) where NAME1='+EDIT1.TEXT+' AND NAME2='+EDIT2.TEXT+'' GROUP BY NAME1,NAM2 ORDER BY NAME1';

')

نسأل الله الجنه لنا ولوالدينا ولمن لهم حق علينا

#3

شكرا لك shalwan

هذه الطريقة تنفع في حال كنت اريد دمج كل مجموعة لوحدها

انا اريد جمع جميع القيم المتشابهة مع جمع تفاصيلها من الارقم دفعة واحدة

مثال

لدي قاعدة بيانات فيها 500 سجل ومنها 50 سجل مكررة تحتوي نفس الاسم ولكن الارقام مختلفة

اريد فقط هذه الـ50 سجل مع جمع مايقابلها من الارقام دفعة واحد دون الحاجة الى تحديد كل مجموعة لوحدها

ارجو ان تكون الفكرة واضحة

#4

السلام عليكم...

إذا كنت قد فهمت السؤال فأعتقد أن كلام الأخ shalwan صحيح مع بعض التعديل البسيط في جملة SELECT كالتالي:

  1. SQL := 'SELECT NAME1, NAME2, SUM(QMONY) AS QM, SUM(QUNTTY) AS QNT FROM tablename WHERE (NAME1 = ' + QuotedStr(Edit1.Text) + ') AND (NAME2 = ' + QuotedStr(Edit2.Text) + ') GROUP BY NAME1, NAME2 ORDER BY NAME1';
  2.  

فهذه الصيغة تعطيك سجلاً واحداً فيه الاسم الأول و الاسم الثاني و حقلان للإجمالي، للشخص المحدد اسمه في Edit1 و Edit2.

أما إذا كنت تريد تطبيق ذلك على كل الأسماء (السجلات) لديك (و عرضها في Grid مثلاً) فاحذف عبارة WHERE و ما يتبعها من شروط:

  1. SQL := 'SELECT NAME1, NAME2, SUM(QMONY) AS QM, SUM(QUNTTY) AS QNT FROM tablename GROUP BY NAME1
    , NAME2 ORDER BY NAME1';
  2.  

نرجو الاستفادة و السلام.

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

مواضيع مشابهة