اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

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

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

السلام عليكم

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

لدي جدول 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