الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

مشكلة في Update

Featured Replies

بتاريخ:

السلام عليكم

عندي 2 جداول الأول جدول الزبائن CLIENT
و الثاني جدول الفواتير FACTURE

جدول الفواتير يتضمن الزبائن CODE_CLI و الشخص المسؤول CODE_GEST , و الفاتورة CODE_FACT و الأيام DATE
عندي في هذا الجدول مجموعة من lines تضم نفس CODE_CLI و CODE_FACT و لكن ب CODE_GEST و DATE مختلفة

الجدول الأول يتضمن CLI_CODE_GEST و CODE_CLIENT


أود أن أعمل UPDATE على الجدول CLIENT
لكي أستطيع أن أعطي ل CLI_CODE_GEST الشخص المسؤول CODE_GEST ذو أول (أقدم) تاريخ DATE


فعلتها على الشكل التالي

UPDATE CLIENT SET CLI_CODE_GEST = (select CODE_GEST from FACTURE
where CODE_CLI=CODE_CLIENT and DATE in (select min(DATE)
from FACTURE where CODE_CLI=CODE_CLIENT
group by CODE_CLI))

المشكلة في الرسالة

ORA-01427 Sous-interrogation ramenant plusieurs lignes

بتاريخ:

السلام عليكم
مشكله حضرتك ان جمله ال Update ال select الفيها بتجيب اكتر من row
علشان كده بيظهر الخطأ ده
وعلى قد ما فهمت من شرحك لو الزبون لي فاتورتين في نفس اليوم وبفرض كمان ان CODE_GEST
مختلف في الفاتورتين فأكيد هيظهر الخطأ ده

بتاريخ:
  • كاتب الموضوع

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

من جوابك فهمت خطئي

لكن كيف يمكن لي أن أتفادى هذا المشكل
يعني كيف يمكن لي أن اجيب سطر واحد من "لو الزبون لي فاتورتين في نفس اليوم وبفرض كمان ان CODE_GEST
مختلف في الفاتورتين"؟؟؟

بتاريخ:

ممكن تزودي في ال subquery
and rownum=1
كده هيجبلك واحد بس
بس على فكره على الفهمته تركيبه الجدولين كده مش صح

بتاريخ:
  • كاتب الموضوع

مفهمتش كيف اعملها يعني اين أضيف rownum

بتاريخ:

UPDATE CLIENT SET CLI_CODE_GEST = (select CODE_GEST from FACTURE
where CODE_CLI=CODE_CLIENT and DATE in (select min(DATE)
from FACTURE where CODE_CLI=CODE_CLIENT
group by CODE_CLI)
and rownum=1
)

بتاريخ:
  • كاتب الموضوع

شكرا
لكن وجدت مشكلة أخرى

Impossible de mettre à jour CLI_CODE_GEST avec NULL

عملت هذا الكود

UPDATE CLIENT SET CLI_CODE_GEST = (select CODE_GEST from FACTURE
where CODE_CLI=CODE_CLIENT and CODE_GEST is not null and DATE in (select min(DATE)
from FACTURE where CODE_CLI=CODE_CLIENT
group by CODE_CLI)
and rownum=1
)

يعطيني نفس المساج

بتاريخ:

;كده مشكلتك ان ال rowالجه قيمه CODE_GEST الفيه ب null واكيد CLI_CODE_GEST not null فظهرت المشكله دى
وعشان تستبعدي ال rows الفيها ال nullزودي
UPDATE CLIENT SET CLI_CODE_GEST = (select CODE_GEST from FACTURE
where CODE_CLI=CODE_CLIENT and CODE_GEST is not null and DATE in (select min(DATE)
from FACTURE where CODE_CLI=CODE_CLIENT
group by CODE_CLI)
and rownum=1
and CODE_GEST is not null
)
بس زي ماقلتلك فكره الجدولين كده مش مظبوطه حاوبى تشرحي انت عايزه تعملي ايه يمكن يكون في حاجه احسن

بتاريخ:
  • كاتب الموضوع

;كده مشكلتك ان ال rowالجه قيمه CODE_GEST الفيه ب null واكيد CLI_CODE_GEST not null فظهرت المشكله دى
وعشان تستبعدي ال rows الفيها ال nullزودي
UPDATE CLIENT SET CLI_CODE_GEST = (select CODE_GEST from FACTURE
where CODE_CLI=CODE_CLIENT and CODE_GEST is not null and DATE in (select min(DATE)
from FACTURE where CODE_CLI=CODE_CLIENT
group by CODE_CLI)
and rownum=1
and CODE_GEST is not null
)
بس زي ماقلتلك فكره الجدولين كده مش مظبوطه حاوبى تشرحي انت عايزه تعملي ايه يمكن يكون في حاجه احسن



نفس المشكلة و نفس المساج أختي سارة


الجدولين عندي من الاول يعني مفروضين عليا استعملهم
انا عاوزة اخر تاريخ للفاتورة اعطيه للزبون في جدول CLIENT
بتاريخ:

معلش انا مأخدتش بالي انك اصلا حاطه الشرط ده بس هو كده فعلا ماجبش ال row الفيه CODE_GEST ب null
والمشكله دى ظهرت تانى لان الsubquery ماجبش اي row فأعتبر القيمه null
جربي كده

UPDATE CLIENT SET CLI_CODE_GEST = (select NVL(CODE_GEST,CLI_CODE_GEST) 
                                   from FACTURE
                                   where CODE_CLI=CODE_CLIENT 
                                   and DATE in (select min(DATE)
                                               from FACTURE where CODE_CLI=CODE_CLIENT
                                               group by CODE_CLI)
                                   and rownum=1 
                                   ) 


كده لو قيمه CODE_GEST ب NULL هيسيب CLI_CODE_GEST زي ما هي

بتاريخ:
  • كاتب الموضوع

معلش انا مأخدتش بالي انك اصلا حاطه الشرط ده بس هو كده فعلا ماجبش ال row الفيه CODE_GEST ب null
والمشكله دى ظهرت تانى لان الsubquery ماجبش اي row فأعتبر القيمه null
جربي كده

UPDATE CLIENT SET CLI_CODE_GEST = (select NVL(CODE_GEST,CLI_CODE_GEST) 
                                   from FACTURE
                                   where CODE_CLI=CODE_CLIENT 
                                   and DATE in (select min(DATE)
                                               from FACTURE where CODE_CLI=CODE_CLIENT
                                               group by CODE_CLI)
                                   and rownum=1 
                                   ) 


كده لو قيمه CODE_GEST ب NULL هيسيب CLI_CODE_GEST زي ما هي



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

تم تعديل بواسطة amal4u

بتاريخ:

UPDATE CLIENT SET CLI_CODE_GEST = (select NVL(CODE_GEST,CLI_CODE_GEST)  
                  from FACTUR 
                  where CODE_CLI=CODE_CLIENT
                  and DATE in (select min(DATE) 
                  from FACTUR where CODE_CLI=CODE_CLIENT
                  and CODE_GEST is not null
                 )
                                   and CODE_GEST is not null 
                                   and rownum=1  
                                   ) 
where CODE_CLIENT in  (select CODE_CLI   
                                   from FACTUR 
                                   where CODE_CLI=CODE_CLIENT
                                   and Date in (select min(Date) 
                                               from FACTUR where CODE_CLI=CODE_CLIENT
                                               and CODE_GEST is not null                        
                                               ) 
                                   and rownum=1  
                                  and CODE_GEST is not null
                                   ) 

بتاريخ:
  • كاتب الموضوع

شكرا على مجهودك

عمل الكود معي بطريقة فعالة
اشكرك كثيرا

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

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

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.