RAIANESAMI قام بنشر الأربعاء at 18:45 قام بنشر الأربعاء at 18:45 (معدل) السلام عليكم اريد البحث عن تكرارات اسم المادة حسب رقم الزبون في المدة 03 أشهر قبل تاريخ الفاتورة test.mdb تم تعديل الأربعاء at 19:26 بواسطه ابو جودي تنسيق
ابو جودي قام بنشر الأربعاء at 19:31 قام بنشر الأربعاء at 19:31 ان شاء الله عند استخدم هذه الجمله فى استعلام تجد من ورائها مبتغاك SELECT t1.* FROM test AS t1 WHERE EXISTS ( SELECT 1 FROM test AS t2 WHERE t2.[رقم الزبون] = t1.[رقم الزبون] AND t2.[إسم المادة] = t1.[إسم المادة] AND t2.[تاريخ الفاتورة] < t1.[تاريخ الفاتورة] AND t2.[تاريخ الفاتورة] >= DateAdd("m", -3, t1.[تاريخ الفاتورة]) ); ملاحظة هامة :- استخدمت t1 وt2 ليس تغييرا في اسم الجدول بل هو اسم مستعار مؤقت داخل الاستعلام أفضل ذلك عندما أستخدم نفس الجدول مرتين في مقارنة داخلية حتى يفهم Access أي نسخة نقصد داخل الاستعلام (خصوصا مع EXISTS أو JOIN) في الاستعلام المستخدم نحن نبحث داخل نفس الجدول test مرتين: مرة للصف الأساسي (t1) ومرة للصفوص الأخرى التي نبحث بينها عن التكرارات (t2) t1 هو السجل الأساسي الذي نتحقق منه t2 هو سجل آخر في الجدول نبحث فيه عن تطابقات الشرط EXISTS يتحقق من وجود أي سجل آخر بنفس اسم المادة ورقم الزبون في نطاق 3 شهور قبل تاريخ الفاتورة الحالية ولكن نصيحة ذهبيه حاول بقدرالامكان عدم استخدام اللغة العربية فى تسمية الجداول والحقول
RAIANESAMI قام بنشر الأربعاء at 20:06 الكاتب قام بنشر الأربعاء at 20:06 (معدل) اين اضع هذه الجملة test_01.mdb تم تعديل الأربعاء at 20:10 بواسطه RAIANESAMI
ابو جودي قام بنشر الأربعاء at 20:13 قام بنشر الأربعاء at 20:13 فى استعلام كما بالمرفق التالى test.zip
RAIANESAMI قام بنشر الأربعاء at 20:40 الكاتب قام بنشر الأربعاء at 20:40 (معدل) كيف حصلتي على t1و t2 في الاستعلام تم تعديل الأربعاء at 20:43 بواسطه RAIANESAMI
ابو جودي قام بنشر الأربعاء at 21:39 قام بنشر الأربعاء at 21:39 هذا استعلام مركب الاستعلام الاساسى الذى يمثل الجدول ككل هو : وتتم عملية التسمية المؤقته كما شرحتها لك سابقا من خلال : AS t1 SELECT t1.*FROM test AS t1 ; واضفت بداخله ستعلام فرعى وبه جمله شرطيه SELECT 1 FROM test AS t2 WHERE t2.[رقم الزبون] = t1.[رقم الزبون] AND t2.[إسم المادة] = t1.[إسم المادة] AND t2.[تاريخ الفاتورة] < t1.[تاريخ الفاتورة] AND t2.[تاريخ الفاتورة] >= DateAdd("m", -3, t1.[تاريخ الفاتورة]); وطبعا فى الاستعلام الغرعى والخاص بجملة الشرط استخدمت التسمية المؤقته : AS t2 كما تقدم فى الشرح السابق سبب استخدام تسميات مختلفى لنفس الجدول
RAIANESAMI قام بنشر الأربعاء at 21:45 الكاتب قام بنشر الأربعاء at 21:45 مشكور اخي إدا كان تاريخ الفاتورة مكرر مرتين نفس اليوم وادا اردت اضافة شرط اخر هل اكتب هكذا SELECT 1 FROM test AS t2 WHERE t2.[رقم الزبون] = t1.[رقم الزبون] AND t2.[إسم المادة] = t1.[إسم المادة] AND t2.[حجم المادة] = t1.[حجم المادة] AND t2.[تاريخ الفاتورة] < t1.[تاريخ الفاتورة] AND t2.[تاريخ الفاتورة] >= DateAdd("m", -3, t1.[تاريخ الفاتورة]);
ابو جودي قام بنشر الأربعاء at 22:00 قام بنشر الأربعاء at 22:00 لا افهم ماذا تريد تحديدا هل السؤال : 24 دقائق مضت, RAIANESAMI said: إدا كان تاريخ الفاتورة مكرر مرتين نفس اليوم الاجابه لا جديد ولا تعديل على الكود فالسطر : AND t2.[تاريخ الفاتورة] >= DateAdd("m", -3, t1.[تاريخ الفاتورة]); يحتوى على >= ولو كان هذا سؤال أخر منفصل بذاته عن موضوع تكرار تاريخ الفاتورة مرتين نفس اليوم 24 دقائق مضت, RAIANESAMI said: وادا اردت اضافة شرط اخر هل اكتب هكذا AND t2.[حجم المادة] = t1.[حجم المادة] نعم هو تماما كما قمت أنت الان بإضافة شرط حجم المادة الى الشروط ولكن النتيجه التى سوف تحصل عليها من الاستعلام هى التى يتوافر فيها كل هذه الشروط مجتمعين معا لذلك تأكد من الشروط بشكل صحيح بتمعن وتأن شديدين فسوف يتم الفرز والتصفيه للبيانات بعد توافر كل هذه الشروط مجتمعين معا طيب اذا كان التاريخ متضمنا وقت لنتلافى ههذ المشكلة تكون جملة الاستعلام بالشكل التالى من خلال : DateValue SELECT t1.* FROM test AS t1 WHERE EXISTS ( SELECT 1 FROM test AS t2 WHERE t2.[رقم الزبون] = t1.[رقم الزبون] AND t2.[إسم المادة] = t1.[إسم المادة] AND DateValue(t2.[تاريخ الفاتورة]) >= DateAdd("m", -3, DateValue(t1.[تاريخ الفاتورة])) AND DateValue(t2.[تاريخ الفاتورة]) <= DateValue(t1.[تاريخ الفاتورة]) AND t2.[تاريخ الفاتورة] <> t1.[تاريخ الفاتورة] );
RAIANESAMI قام بنشر الأربعاء at 22:12 الكاتب قام بنشر الأربعاء at 22:12 ادا كان نفس ناريخ الفاتورة والشرtest_03.mdbوط محققة لا تخرج اي نتيجة
ابو جودي قام بنشر الأربعاء at 22:36 قام بنشر الأربعاء at 22:36 استخدم الكود التالى كجملة استعلام عن طريق Count ولا تزعل نفسك يا سيدى انت تأمر SELECT t1.* FROM test AS t1 WHERE ((((SELECT Count(*) FROM test AS t2 WHERE t2.[رقم الزبون] = t1.[رقم الزبون] AND t2.[إسم المادة] = t1.[إسم المادة] AND t2.[حجم المادة] = t1.[حجم المادة] AND DateValue(t2.[تاريخ الفاتورة]) >= DateAdd("m", -3, DateValue(t1.[تاريخ الفاتورة])) AND DateValue(t2.[تاريخ الفاتورة]) <= DateValue(t1.[تاريخ الفاتورة]) ))>1));
RAIANESAMI قام بنشر الأربعاء at 22:48 الكاتب قام بنشر الأربعاء at 22:48 11 دقائق مضت, ابو جودي said: ظهرت لي هذه االرسالة
ابو جودي قام بنشر الأربعاء at 23:17 قام بنشر الأربعاء at 23:17 استخدم الجملة دى افضل مع عدد السجلات الضخمه تكون اسرع نظرا لعدم وجود استعلامات فرعيه SELECT t1.* FROM test AS t1 INNER JOIN ( SELECT [رقم الزبون], [إسم المادة], [حجم المادة] FROM test GROUP BY [رقم الزبون], [إسم المادة], [حجم المادة] HAVING COUNT(*) > 1 AND MAX([تاريخ الفاتورة]) >= DateAdd("m", -3, MIN([تاريخ الفاتورة])) ) AS t2 ON t1.[رقم الزبون] = t2.[رقم الزبون] AND t1.[إسم المادة] = t2.[إسم المادة] AND t1.[حجم المادة] = t2.[حجم المادة]; روح لـ Create > Query Design في SQL View الصق الكود أعلاه المرفق test_05.mdb
RAIANESAMI قام بنشر الأربعاء at 23:25 الكاتب قام بنشر الأربعاء at 23:25 اخي اسمحلي اتعبتك معي نفس ناريح صحيحة لكن ادا كان نفس التاريح وناريخ قبله في المدة 03 اشهر معا
ابو جودي قام بنشر الأربعاء at 23:29 قام بنشر الأربعاء at 23:29 4 دقائق مضت, RAIANESAMI said: نفس ناريح صحيحة لكن ادا كان نفس التاريح وناريخ قبله في المدة 03 اشهر معا الصورة دى مش من المرفق الاخيـــر صح ؟
RAIANESAMI قام بنشر بالامس في 07:59 الكاتب قام بنشر بالامس في 07:59 للتوضيح اكثر اذا كان تاريخ الفاتورة 01/03/2025 أي تاريخ موجود قبل تاريخ 01/03/2025 لمدة 03اشهر أقل منه او يساويه يخرجه الاستعلام مثل 01/03/2025 10/02/2025 أي في مجال من 01/12/2024الى غابة 01/03/2025
RAIANESAMI قام بنشر بالامس في 11:25 الكاتب قام بنشر بالامس في 11:25 مشكور اخي ابو حودي حفظك الله ورعاك عبقري 1
RAIANESAMI قام بنشر منذ 21 ساعات الكاتب قام بنشر منذ 21 ساعات السلام عليكم اخي عند إضافة عدة تواريخ فاتورات وجدت ان الاستعلام يظهر جميع التواريخ حسب اسم الزبون خارج المجال اي التي أقل من 3اشهر يظهرها كذلك
RAIANESAMI قام بنشر منذ 20 ساعات الكاتب قام بنشر منذ 20 ساعات السلام عليكم اخي عند إضافة عدة تواريخ فاتورات وجدت ان الاستعلام يظهر جميع التواريخ حسب اسم الزبون خارج المجال اي التي اكبر من 3اشهر يظهرها كذلكtest_05.mdb
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.