RAIANESAMI قام بنشر منذ 22 ساعات قام بنشر منذ 22 ساعات (معدل) السلام عليكم اريد البحث عن تكرارات اسم المادة حسب رقم الزبون في المدة 03 أشهر قبل تاريخ الفاتورة test.mdb تم تعديل منذ 21 ساعات بواسطه ابو جودي تنسيق
ابو جودي قام بنشر منذ 21 ساعات قام بنشر منذ 21 ساعات ان شاء الله عند استخدم هذه الجمله فى استعلام تجد من ورائها مبتغاك 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 قام بنشر منذ 20 ساعات الكاتب قام بنشر منذ 20 ساعات (معدل) اين اضع هذه الجملة test_01.mdb تم تعديل منذ 20 ساعات بواسطه RAIANESAMI
RAIANESAMI قام بنشر منذ 20 ساعات الكاتب قام بنشر منذ 20 ساعات (معدل) كيف حصلتي على t1و t2 في الاستعلام تم تعديل منذ 20 ساعات بواسطه RAIANESAMI
ابو جودي قام بنشر منذ 19 ساعات قام بنشر منذ 19 ساعات هذا استعلام مركب الاستعلام الاساسى الذى يمثل الجدول ككل هو : وتتم عملية التسمية المؤقته كما شرحتها لك سابقا من خلال : 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 قام بنشر منذ 19 ساعات الكاتب قام بنشر منذ 19 ساعات مشكور اخي إدا كان تاريخ الفاتورة مكرر مرتين نفس اليوم وادا اردت اضافة شرط اخر هل اكتب هكذا SELECT 1 FROM test AS t2 WHERE t2.[رقم الزبون] = t1.[رقم الزبون] AND t2.[إسم المادة] = t1.[إسم المادة] AND t2.[حجم المادة] = t1.[حجم المادة] AND t2.[تاريخ الفاتورة] < t1.[تاريخ الفاتورة] AND t2.[تاريخ الفاتورة] >= DateAdd("m", -3, t1.[تاريخ الفاتورة]);
ابو جودي قام بنشر منذ 18 ساعات قام بنشر منذ 18 ساعات لا افهم ماذا تريد تحديدا هل السؤال : 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 قام بنشر منذ 18 ساعات الكاتب قام بنشر منذ 18 ساعات ادا كان نفس ناريخ الفاتورة والشرtest_03.mdbوط محققة لا تخرج اي نتيجة
ابو جودي قام بنشر منذ 18 ساعات قام بنشر منذ 18 ساعات استخدم الكود التالى كجملة استعلام عن طريق 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 قام بنشر منذ 18 ساعات الكاتب قام بنشر منذ 18 ساعات 11 دقائق مضت, ابو جودي said: ظهرت لي هذه االرسالة
ابو جودي قام بنشر منذ 17 ساعات قام بنشر منذ 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 قام بنشر منذ 17 ساعات الكاتب قام بنشر منذ 17 ساعات اخي اسمحلي اتعبتك معي نفس ناريح صحيحة لكن ادا كان نفس التاريح وناريخ قبله في المدة 03 اشهر معا
ابو جودي قام بنشر منذ 17 ساعات قام بنشر منذ 17 ساعات 4 دقائق مضت, RAIANESAMI said: نفس ناريح صحيحة لكن ادا كان نفس التاريح وناريخ قبله في المدة 03 اشهر معا الصورة دى مش من المرفق الاخيـــر صح ؟
RAIANESAMI قام بنشر منذ 8 ساعات الكاتب قام بنشر منذ 8 ساعات للتوضيح اكثر اذا كان تاريخ الفاتورة 01/03/2025 أي تاريخ موجود قبل تاريخ 01/03/2025 لمدة 03اشهر أقل منه او يساويه يخرجه الاستعلام مثل 01/03/2025 10/02/2025 أي في مجال من 01/12/2024الى غابة 01/03/2025
RAIANESAMI قام بنشر منذ 5 ساعات الكاتب قام بنشر منذ 5 ساعات مشكور اخي ابو حودي حفظك الله ورعاك عبقري 1
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.