اذهب الي المحتوي
أوفيسنا

الردود الموصى بها

قام بنشر (معدل)

السلام عليكم

اخواني اخواتي  اريد مساعدنكم

لدي جدول test  ويوجد به رقم الزيون - اسم المادة -حجم المادة - تاريخ  فاتورة

واريد البحث عن تكرارات في مدة اقل من 03 شهور ابتداءا من   اكبر تاريخ فاتورة وفقط

اي في مجال أكبر تاريخ فاتورة الى أقل من تاريخ فاتورة ب 03 اشهر

استعملت لكنه يظهر لي تاريخ خارج المجال

SELECT t1.*
FROM test AS t1
WHERE EXISTS (
    SELECT 1
    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.[تاريخ الفاتورة])
        AND t2.[تاريخ الفاتورة] <> t1.[تاريخ الفاتورة]
);

 

تم تعديل بواسطه RAIANESAMI
  • RAIANESAMI changed the title to البحث عن تكرار في فترة زمنية سابقة ب 03 شهور
قام بنشر

db2.mdb

وجربت طريقة اخري ولم افلح

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.[رقم الزبون]);

 

قام بنشر

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

أخي الكريم ، في استعلامك ، تظهر النتائج بهذا الشكل :-

 

استعلام1
ID تاريخ الفاتورة رقم الزبون إسم المادة حجم المادة
1 2025-03-01 1001 سردين 1000غ
8 2025-03-01 1001 سردين 1000غ
12 2025-03-01 1006 جبن 500غ
13 2025-02-20 1006 جبن 500غ
14 2025-01-01 1006 جبن 500غ
15 2024-12-01 1006 جبن 500غ
16 2024-11-01 1006 جبن 500غ
17 2024-10-01 1006 جبن 500غ

 

الآن كنوع من التوضح ، هل النتيجة التي تريدها = :-

 

Query1
ID تاريخ الفاتورة رقم الزبون إسم المادة حجم المادة
1 2025-03-01 1001 سردين 1000غ
2 2025-01-01 1002 سردين 100غ
3 2025-01-01 1003 اللحم 500غ
4 2025-09-01 1004 طماطم 1000غ
5 2025-01-01 1005 طماطم 500غ
6 2025-01-01 1006 مشروب عازي
8 2025-03-01 1001 سردين 1000غ
9 2025-01-01 1001 سردين 50غ
10 2025-04-01 1002 مشروب عازي
11 2025-02-01 1006 طماطم 500غ
12 2025-03-01 1006 جبن 500غ
13 2025-02-20 1006 جبن 500غ
14 2025-01-01 1006 جبن 500غ
15 2024-12-01 1006 جبن 500غ

 

أم هل لك أن توضح بشكل أكبر بناءً على مثالك ما النتائج التي يجب أن تظهر لك ؟؟؟

 

أم هذه النتيجة :-

 

Query2
ID تاريخ الفاتورة رقم الزبون إسم المادة حجم المادة
1 2025-03-01 1001 سردين 1000غ
8 2025-03-01 1001 سردين 1000غ
12 2025-03-01 1006 جبن 500غ
13 2025-02-20 1006 جبن 500غ
14 2025-01-01 1006 جبن 500غ
15 2024-12-01 1006 جبن 500غ

 

 

قام بنشر (معدل)

السلام عليكم اخي

انا اريد مثلا اذا كانت اكير  تاريخ هو 01-03- 2025

للزبون

اريده ان بظهر الاستعلام التواريخ التى تساوي او اقل 01-03-2025  ب 03 اشهر  

اي من تاريخ 01-12-2024 الى غاية 01-03-2025

اما باقي التواريخ التي هي فبل تاريخ الفاتورة 01-12-2024 لا تظهر

ربما في متال الاخير هو الانسب

Query2
ID تاريخ الفاتورة رقم الزبون إسم المادة حجم المادة
1 2025-03-01 1001 سردين 1000غ
8 2025-03-01 1001 سردين 1000غ
12 2025-03-01 1006 جبن 500غ
13 2025-02-20 1006 جبن 500غ
14 2025-01-01 1006 جبن 500غ
15 2024-12-01 1006 جبن 500غ

 

تم تعديل بواسطه RAIANESAMI
  • تمت الإجابة
قام بنشر
2 دقائق مضت, RAIANESAMI said:

ربما في متال الاخير هو الانسب

وهذا هو الاستعلام أخي الكريم :-

SELECT t1.*
FROM test AS t1 INNER JOIN (SELECT a.[رقم الزبون], a.[إسم المادة], a.[حجم المادة]
    FROM test AS a
    INNER JOIN (
        SELECT [رقم الزبون], [إسم المادة], [حجم المادة], MAX([تاريخ الفاتورة]) AS MaxDate
        FROM test
        GROUP BY [رقم الزبون], [إسم المادة], [حجم المادة]
    ) AS b
    ON a.[رقم الزبون] = b.[رقم الزبون]
       AND a.[إسم المادة] = b.[إسم المادة]
       AND a.[حجم المادة] = b.[حجم المادة]
    WHERE a.[تاريخ الفاتورة] >= DateAdd("m", -3, b.MaxDate)
    GROUP BY a.[رقم الزبون], a.[إسم المادة], a.[حجم المادة]
    HAVING COUNT(*) > 1
)  AS t2 ON (t1.[حجم المادة] = t2.[حجم المادة]) AND (t1.[إسم المادة] = t2.[إسم المادة]) AND (t1.[رقم الزبون] = t2.[رقم الزبون])
WHERE (((t1.[تاريخ الفاتورة])>=DateAdd("m",-3,(SELECT MAX(x.[تاريخ الفاتورة])
    FROM test AS x
    WHERE x.[رقم الزبون] = t1.[رقم الزبون]
      AND x.[إسم المادة] = t1.[إسم المادة]
      AND x.[حجم المادة] = t1.[حجم المادة]
))));

 

رغم أنني سأكرر عليك ما تم الإشارة إليه في الكثير من المواضيع ، وهي استعمالك للأسماء العربية في الحقول و أسماء الجداول ... إلخ من مكونات قاعدة البيانات .

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information