الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ساعدوني ارجوكم في هذا الاستعلام

مغلق
بدأه meem77 في 26 مايو 2004 · 5 رد · 958 مشاهدة · في قواعد بيانات Oracle
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

انا لدي جدولين الجدول الاول جدول الراتب

ويحتوي على الحقول الاتية:

رقم الكمبيوتر

الدرجة

العلاوة الدورية

تاريخ بدء الراتب

تاريخ انتهاء الراتب

اما الجدول التالي فهو جدول الموظف ويحتوي على الحقول الاتية:

رقم الموظف

رقم الكمبيوتر

اسم الموظف

ومثال على ذلك :

تاريخ انتهاء الراتب تاريخ بدء الراتب الراتب العلاوة الدورية الدرجة رقم الكمبيوتر

02/10/2003 03/01/2003 10000 06 02 11

04/10/2004 03/10/2003 10200 07 02 11

02/10/1991 03/10/1990 5800 03 05 11

02/10/2001 03/11/2000 5950 04 05 11

02/10/2002 03/10/2001 6100 05 05 11

وانا اريد هنا للشخص الذي يكون رقم الكمبيوتر=11 ان يظهر لي السجل الذي يحمل البيانات التالية

02/10/2003 03/01/2003 10000 06 02 11

وايضا اريد ان تحقق الكويري الشرط التالي

تاريخ انتهاء الراتب تاريخ بدء الراتب الراتب العلاوة الدورية الدرجة رقم الكمبيوتر

02/01/2001 03/01/2000 5850 01 07 13

02/01/2002 03/01/2001 5950 02 07 13

02/01/2003 03/01/2002 6050 03 07 13

02/01/2004 03/01/2003 6200 04 07 13

واريد في هذه الحالة ان تظهر النتيجة

02/01/2001 03/01/2000 5850 01 07 13

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

#2

السلام عليكم

أرجو التوضيح في السؤال

لأن هناك شيء خطا ، كيف تريد أن يظهر رقم الكمبيوتر 11 ، و يحقق الكيوري الثانية التي ما فيها رقم الكمبيوتر 11 . التي كلها 13 .

أو أن تكتب مثال كامل ، فالمثال الي كتبته لا يوجد فيه كمبيوتر رقم 13 ، أما النتيجة التي تريدها فيها الكمبيوتر رقم 13.

نحتاج إلى توضيح حتى نرد عليك

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

#3

المطلوب مني هو تاريخ الترقية لجميع الموظفين وانا ادرجت لك هذه الحالتين في المثال ففي الحالة الاولى:الموظف ترقى الى الدرجة الثانية والعلاوة السادسة ومن ثم هناك علاوة دورية وهي العلاوة السابعة من الدرجة الثانية وهذه لاتعتبر ترقية اي اذا تغيرت الدرجة الى درجة اخرى فيعتبر هنا تاريخ الترقية اول سجل عند تغير الدرجة وذلك حتى لو كان عنده 4 علاوات دورية وفي الحالة الثانية الموظف عند تاريخ تعيينه تعين على الدرجة السابعة وخلال الثلاث سنين لم يترقى لذا فان تاريخ ترقيته هوتاريخ التعيين عل هذه الدرجة حيث ان الدرجة لم تتغير .

وانا قد عملت الاستعلام ويحقق الشروط ولكن عند عمل الرن يظهر لي خطأ

ORA-01427:single-row subquery returns more than one row

والملف المرفق في الاسفل

last_promotion.sql

#4

السلام عليكم

الخطأ الوارد معناه أن ال subquery المستخدة تخرج أكثر من سطر .

و هذا لا يجوز عندما تستخدم المساواة أي =

قم بتغيير ال = إلى IN في كل subquery

كما في التالي : إذا أنا نسيت أغير شيء غيره أنت

 SELECT sal.person_id,grade_code,grade_step_seq,sal_amount,sal_from_date,sal_thru_date
 FROM  hr_emp_salaries sal,hr_employment 
 WHERE hr_employment.person_id=sal.person_id
 AND   emp_status='G'
 AND   emp_id ='001204'
 AND   grade_code  IN   (
         SELECT  grade_code
         FROM    hr_emp_salaries s
         WHERE   s.person_id = sal.person_id
         AND     sal_thru_date  IN  (
                                 select MAX(sal_thru_date)  
                                 FROM     hr_emp_salaries t                                     
                                 WHERE  t.person_id =sal.person_id  )                                          
                               )
                                           
 AND    grade_step_seq IN  (
                          SELECT min(grade_step_seq)
                          FROM hr_emp_salaries t
                          WHERE t.grade_code IN  
                                           (SELECT  grade_code
                                            FROM    hr_emp_salaries s
                                            WHERE   s.person_id = sal.person_id
                                            AND     sal_thru_date IN ( SELECT MAX(sal_thru_date)  
                                                                     FROM     hr_emp_salaries t                                     
                                                                     WHERE  t.person_id =sal.person_id
                                                                    )                                          
                                             )
                          AND   t.person_id =sal.person_id )

أرجو أن تخبرني بالنتيجة ،

و إذا ما زال الخطأ ، أخبرني ، سنحلها سويا بإذن الله .

كما أذكر دائما بضرورة ذكر الخطأ الوارد ، لأن ثلاث أرباع الحل من فهم الخطأ الذي أورده أوراكل ، أعني : ORA-01427:single-row subquery returns more than one row

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

#5

انا اشكرك جدا على تعاونك معي والحمدلله لقد تحقق الاستعلام

#6

أرجو من الجميع مساعدتي في هذا الاستعلام ومن الأخ MAEN خاصة

المطلوب مني هو تاريخ الترقية لجميع الموظفين وانا ادرجت لك هذه الحالتين في المثال ففي الحالة الاولى:الموظف ترقى الى الدرجة الثانية والعلاوة السادسة ومن ثم هناك علاوة دورية وهي العلاوة السابعة من الدرجة الثانية وهذه لاتعتبر ترقية اي اذا تغيرت الدرجة الى درجة اخرى فيعتبر هنا تاريخ الترقية هو اول سجل عند تغير الدرجة وذلك حتى لو كان عنده 4 علاوات دورية وفي الحالة الثانية الموظف عند تاريخ تعيينه تعين على الدرجة السابعة وخلال الثلاث سنين لم يترقى لذا فان تاريخ ترقيته اريد ان يرجعه null وليس كما وضحته سابقا كيف اعمل في حالة ان الدرجة لم تتغير اريد ان يرجع لي تاريخ الترقية NULL .

ارجو مساعدتي بسسسسسرعة

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…