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

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

قام بنشر

السلام عليكم

في المرفق جدولان واستعلامان

افتح استعلام التحديث على التصميم وستعرف المطلوب

اريد تحديث حقل في جدول بناء على قيمة في استعلام تجميعي

حاولت ولكني لم انجح .. منطقيا يجب ان يعمل لأني استخدم الاستعلام التجميعي كدليل فقط

Database1.rar

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

من باب التوضيح !!

هل سيتم تحديث قيمة chek1 بشرط userID = aa بناءً على ما فهمت ؟؟

K1.png.c45b59335fc42bf07d41a412e82b27b6.png

حسب قيمة pp = 0 ستعود على aa !

تم تعديل بواسطه Foksh
قام بنشر
منذ ساعه, ابوخليل said:

اريد تحديث حقل في جدول بناء على قيمة في استعلام تجميعي

 

استاذى الجليل و معلمى القدير و والدى الحبيب الاستاذ @ابوخليل :fff:

اعتقد لا يمكن عمل ذلك فان الاستعلام Query1 غير قابل للتحديث لانه يحتوى على دوال تجميع SUM 


بدلاً من استخدام Query1 مباشرة في عملية التحديث

اعتقد لو كنت قدرت افهم صح ممكن استخدام استعلام فرعي (Subquery) داخل جملة التحديث بشكل مباشر
 

UPDATE Table1 SET Table1.chek1 = 0
WHERE Table1.userID IN (
    SELECT Table2.user_ID
    FROM Table2
    GROUP BY Table2.user_ID
    HAVING CLng(Sum(Table2.price1)) - CLng(Sum(Table2.price2)) = 0
);

 

قام بنشر

فيما يتعلق لما فهمته ، هل النتيجة في المرفق صحيحة ؟؟؟

اولاً شغل اٌستعلام Query3 لأنشاء جدول مؤقت ، ثم شغل الإستعلام Query4

Database1.accdb

قام بنشر

جزاكم الله خيرا احبتي

طرحت المسألة لعل هناك حلا سهلا بعيدا عن انشاء جدول وسيط .. وهو آخر ما توصلت اليه

5 ساعات مضت, أبوبسمله said:

وعليكم السلام

اتفضل اطلع ع هذا الموضوع شيخنا الجليل @ابوخليل

بالتوفيق

وتفاجأت بهذا الموضوع .. نفس ما كنت افكر به .. لذا اعتبر نفسي مخالفا لقواعد المشاركة .. ومنها اجراء البحث قبل طرح السؤال 😶

اقتباس

فيما يتعلق لما فهمته ، هل النتيجة في المرفق صحيحة ؟؟؟

اولاً شغل اٌستعلام Query3 لأنشاء جدول مؤقت ، ثم شغل الإستعلام Query4

 آخر العلاج الكي  🙈  تصدق اني ابتعد كثيرا عن الاستعلامات واستخدمها كمصادر فرعية في النماذج والتقارير .. ومن باب اولى الجداول الاسعافية

5 ساعات مضت, ابو جودي said:

اعتقد لا يمكن عمل ذلك فان الاستعلام Query1 غير قابل للتحديث لانه يحتوى على دوال تجميع SUM 

 

هذا هو الظاهر لنا ولكل من حاول

حتى  استخدام الاستعلام الفرعي  داخل جملة التحديث  لم يعط نتيجة

لذا عدلت عن الفكرة واستبدلتها بالتحديث المباشر من النموذج .. حسب السجل الظاهر

اكرر شكري وامتناني لكم احبتي 

 

قام بنشر
5 ساعات مضت, ابوخليل said:

حتى  استخدام الاستعلام الفرعي  داخل جملة التحديث  لم يعط نتيجة

اعرف انه لم يعط نتيجه

انا بصراحة لم افهم منطق النتيجة

ممكن اتقل على حضرتك ومن واقع النتيجة بالجدولين والاستعلام  Query1 
حضرتك تقول لى ايه اللى المفروض يحصل بناء على رغبتك بالقيم المفروض النتيجة هنا تكون ايه طيب

Table1
ID userID chek1
1 aa 1
2 aa 1
3 cc 1
4 cc 1
5 gg 1

لان دى نتيجة الاستعلام

Query1
user_ID p1 p2 pp
aa 40 30 10
bb 60 60 0
gg 40 25 15

 

الاستعلام يوضح ان القيمة  bb  للحقل  user_ID وهو حقل الربط اللى حضرتك عاوز تستخدمه فى استعلام التحديث هى التى تحقق معها الشرط فى الحقل PP = 0

طيب بما ان user_ID قيمته كات عند تحقيق الشرط هى bb  

اين هذه القيمه القيمه فى الجدول Table1 بالنسبة للحقل الربط userID  المستخدم فى الربط فى استعلام التحديث 

لذلك الاستعلام الفرعى لم يعط اى نتائج

ولكن لو كانت القيمة موجودة  لعمل الاستعلام

هذا ما فهمته انا من التحليل 

قام بنشر

السلام عليكم

 

اذا ممكن اشارك معاكم 🙂

 

الاستعلام الفرعي هو الجواب بدلا عن الجدول المؤقت.

رجاء تجربة هذا الاستعلام:

UPDATE Table1 SET Table1.chek1 = 0
WHERE (((Table1.userID) In (SELECT [user_ID] FROM Query1 as Q1 WHERE Table1.userID=Q1.user_ID  AND Q1.pp=0)));

 

image.png.15629b311cff94ad76faffcf0c1b0ac5.png

.

وقد قام بالتحديث (ولكن انتبه ن فقيمة p=0 موجودة فقط في السجل bb وهو غير موجود في الجدول Table1 ، لذا فلن تظهر لك اي نتيجة ، وهذا ما اشار اليه اخوي ابو جودي) ، وللتجربة ، غيّر قيمة P=0 في الاستعلام الفرعي الى p=15 وستترى النتيجة

 

1623.Database1.accdb.zip

  • Like 1
قام بنشر

:wallbash:  هذه نتيجة العمل آخر الليل  .. فاعذرني وسامحني

من اين جاءت الـــ  bb ؟؟ انا مخطىء وايضا المثال ناقص

السبب اني اعمل على برنامج وصنعت هذا المثال على عجل من اجل التسهيل .. وكما يقال آخر العجلة الندامة :imsorry:

@ابو جودي  كودك شغال تمام   لما استبدل الــ  bb  بـــ  cc ولكنه يقوم بتحديث جميع حقول الــ  cc 

يعني من الآخر مثالي ناقص

ارفقت مثالي الصحيح .. والمطلوب ان التحديث يتم عند تطابق  حقلين وليس حقل واحد  useriD  و  cardNo

 

Database2.rar

 

10 دقائق مضت, jjafferr said:

السلام عليكم

اذا ممكن اشارك معاكم 🙂

الاستعلام الفرعي هو الجواب بدلا عن الجدول المؤقت.

رجاء تجربة هذا الاستعلام:

 

اهلا اخوي جعفر .. هو ما ذكرته اعلاه  🙈

  • Haha 1
قام بنشر

تفضل الاستعلام

UPDATE Table1 SET Table1.chek1 = 0
WHERE (((Table1.userID) In (SELECT [user_ID] FROM Query1 as Q1 WHERE Table1.userID=Q1.user_ID  AND Table1.cardNo=Q1.card_No)));

.

وهنا وقعت في المحظور ايضا !!

بياناتك كلها متشابهه ، فعلشان احصل على سجل واحد ، عملت تغيير لبيانات cardNo في الجدول Table1 وابقيت سجل واحد فيه قيمة الجدول Table2

image.png.d5c5b9bc9d6479834fe6678d1fd01046.png

1623.Database2.accdb.zip

  • Like 1
قام بنشر

لا تستعجل يابو عبدالله

البيانات غير متشابهة .. المطلوب تحديث الحقل في جدول1 الى صفر  .. بناء على السجل الذي قيمته صفر في الاستعلام

السجل الذي قيمته صفر في الاستعلام  صحيح ان اليوزرات متشابهة  ولكن رقم الكارد مختلف

  • تمت الإجابة
قام بنشر
33 دقائق مضت, ابوخليل said:

المطلوب تحديث الحقل في جدول1 الى صفر  .. بناء على السجل الذي قيمته صفر في الاستعلام

اوووه

وانا اعتمدت على

منذ ساعه, ابوخليل said:

والمطلوب ان التحديث يتم عند تطابق  حقلين وليس حقل واحد  useriD  و  cardNo

 

 

على العموم ، هذا الاستعلام بعد اضافة pp=0

UPDATE Table1 SET Table1.chek1 = 0
WHERE (((Table1.userID) In (SELECT [user_ID] FROM Query1 as Q1 WHERE Table1.userID=Q1.user_ID  AND Table1.cardNo=Q1.card_No AND Q1.pp=0)));

 

1623.Database2.accdb

  • Like 3
قام بنشر

بعد نجاح فكرة أستاذنا @jjafferr ما شاء الله وتبارك الله ،

مشاركة بعد وعي للمطلوب أستاذ @ابوخليل ..

اعتقد اننا نستطيع الاستغناء عن الاستعلام الأول ، ونكتفي باستعلام التحديث مبني على استعلام فرعي داخلي

 

UPDATE Table1 SET Table1.chek1 = 0
WHERE Table1.userID IN (
    SELECT Table2.user_ID
    FROM Table2
    GROUP BY Table2.user_ID, Table2.card_No
    HAVING Sum(Table2.price1) - Sum(Table2.price2) = 0
)
AND Table1.cardNo IN (
    SELECT Table2.card_No
    FROM Table2
    GROUP BY Table2.user_ID, Table2.card_No
    HAVING Sum(Table2.price1) - Sum(Table2.price2) = 0
);

 

New Idea.accdb

 

 

قام بنشر
3 ساعات مضت, ابوخليل said:

:wallbash:  هذه نتيجة العمل آخر الليل  .. فاعذرني وسامحني

 

هههههههه انا حسيت ان فى شئ غير صحيح وكنت استحى ان اذكر ذلك توقعت اننى المخطئ فى فهمى

  • Haha 1
قام بنشر
17 ساعات مضت, ابوخليل said:

وتفاجأت بهذا الموضوع .. نفس ما كنت افكر به .. لذا اعتبر نفسي مخالفا لقواعد المشاركة .. ومنها اجراء البحث قبل طرح السؤال 😶

ولا مخالفه ولا حاجه شيخنا الجليل

 

10 ساعات مضت, ابوخليل said:

:wallbash:  هذه نتيجة العمل آخر الليل  .. فاعذرني وسامحني

من اين جاءت الـــ  bb ؟؟ انا مخطىء وايضا المثال ناقص

مش لوحدك وكمان فقدان التركيز والارهاق الزائد من التفكير ربنا يعينك ويجازيك عنا خيرا

وما شاء الله جذبت جميع الاحبه

اسال الله لكم جميعا التوفيق والسداد وان يجازيكم عنا خيرا

قام بنشر

اخوي ابوخليل

 

نعم الثمار متنوعة وتعطيك نفس النتيجة ، ولكني افضّل الحل الذي استطيع التعديل عليه وبسهولة ، لذا:

 

انا افضّل الحل في هذه المشاركة ، حيث تستطيع عمل التغيير المطلوب مستقبلا على استعلام التجميع query1 ، وتلقائيا استعلام التحديث query3 سيعمل ، وسيأخذ المستجد من query1 تلقائيا ، كونه استعلام فرعي

 

اما اذا ادخلت جملة SQL استعلام التجميع مباشرة كاستعلام فرعي في استعلام التحديث ، واردت ان تعمل تغيير على جملة SQL استعلام التجميع ، فالخطوات كثيرة ، ومو شرط تضبط:blink:

 

جعفر

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