إنتقال للمحتوى

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

كيفية عمل هذه الجملة للاهمية


6 رد (ردود) على هذا الموضوع

#1 shosho842000

shosho842000

    عضو

  • الأعضــاء
  • 49 مشاركة

تاريخ المشاركة 10 February 2010 - 09:08 PM

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

ازاى اقدر اعمل الجملة دى فى طريقة حساب مرتبات

المطلوب الاتى
انه فى الاول خالص يعمل if condition على الشهر اذا كان بيساوى شهر 1 يبقى
عايزاه جملة select تجيب مجموع الاستحقاقات وهى مثلا sal1,sal2,sal3,sal4,sal4 بناء على شهر 1
لو مش بيساوية يعمل insert into فى جدول salary باستخدام select للبنود دى من الشهر الى فات
يعنى لو مش بيساوى عايزاه يجيب مرتبات الشهر الى قبله ويعمل ليها insertinto فى الجدول

ياريت الموضوع يكون مفهوم

#2 محمد ابوالعلا

محمد ابوالعلا

    مشترك

  • الأعضــاء
  • 110 مشاركة
  • الاسم الأول:محمد
  • اسم العائلة:ابوالعلا
  • البـلـد: Country Flag

تاريخ المشاركة 11 February 2010 - 04:02 AM


السلام عليكم


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


BEGIN SELECT TO_CHAR(SYSDATE,'MM') INTO :GLOBAL.SYS FROM DUAL;

IF :GLOBAL.SYS= '01' THEN

SELECT SUM(NVL(SAL1,0))+SUM(NVL(SAL2,0))+SUM(NVL(SAL3,0))+SUM(NVL(SAL4,0)) INTO :GLOBAL.SUM_SAL FROM TABLE_NAME
WHERE TO_CHAR(COLUMN_DATE,'MM')='01';
ELSE
INSERT INTO TABLE_NAME(COLUMN_NAME1,COLUMN_NAME2)
(SELECT COLUMN_NAME1,COLUMN_NAME2 FROM TABLE_NAME WHERE TO_CHAR(COLUMN_DATE,'MM')=TO_CHAR(SYSDATE-1,'MM'));
END IF ;
END;

تطبيق المثال على جدول الموظفين

BEGIN SELECT TO_CHAR(SYSDATE,'MM') INTO :GLOBAL.SYS FROM DUAL;

IF :GLOBAL.SYS= '01' THEN
SELECT SUM(NVL(SALARY,0))+SUM(NVL(COMMISSION_PCT,0)) INTO :DIS FROM EMPLOYEES
WHERE TO_CHAR(HIRE_DATE,'MM')='01';
ELSE
INSERT INTO EMP1
(SELECT HIRE_DATE FROM EMPLOYEES WHERE TO_CHAR(HIRE_DATE,'MM')=TO_CHAR(SYSDATE-1,'MM'))
;

END IF;
END;

محمد ابوالعلا ORACLE DEVELOPER



#3 shosho842000

shosho842000

    عضو

  • الأعضــاء
  • 49 مشاركة

تاريخ المشاركة 13 February 2010 - 08:31 PM

شكرا الاخ العزيز محمد ابو العلا

بس فى تعديل بسيط على المثال انا عايزاه وهو بيعمل insert للبيانات الى جايه من الشهر الى فات يخلى التاريخ ب1 مش ب 12 دا التعديل البسيط الى عايزاه

ولا حضرتك شايف ايه لان المفرض دى هتكون مرتبات شهر جديد ؟؟؟


وشكرا

#4 محمد ابوالعلا

محمد ابوالعلا

    مشترك

  • الأعضــاء
  • 110 مشاركة
  • الاسم الأول:محمد
  • اسم العائلة:ابوالعلا
  • البـلـد: Country Flag

تاريخ المشاركة 14 February 2010 - 03:25 AM

هنكتب نفس الكود مع تغيير هذه الجملة
ELSE
SELECT LAST_DAY(HIRE_DATE) INTO :GLOBAL.NEW FROM EMPLOYEES
WHERE TO_CHAR(HIRE_DATE,'MM')=TO_CHAR(SYSDATE-1,'MM');

:GLOBAL.NEW:=:GLOBAL.NEW+1;

INSERT INTO EMP1 VALUES (:GLOBAL.NEW);
END IF;
END;
MOHAMED ABOUELELA
[email="MOHAMED_DEV2000@YAHOO.COM"]MOHAMED_DEV2000@YAHOO.COM[/email]

تم التعديل بواسطة محمد ابوالعلا, 14 February 2010 - 03:28 AM.


#5 shosho842000

shosho842000

    عضو

  • الأعضــاء
  • 49 مشاركة

تاريخ المشاركة 14 February 2010 - 10:49 PM

شكرا على الكود بس فى مشكله انى مش فاهما الكود الاخير الى بعد التعديل

فى سؤال اخر لو تكرمت ممكن تقولى اعمله ازاى على sql server وشكرا

#6 shosho842000

shosho842000

    عضو

  • الأعضــاء
  • 49 مشاركة

تاريخ المشاركة 14 February 2010 - 10:52 PM

حضرتك تقصد انى اعمل جدول خاص بالشهور على كدا يكون منفضل انا كونت اقصد انى يكون فى نفس الجدول بس دا الى فهمته على اساس انك عامل جدول emp1 ومدخل جواه الشهر

#7 محمد ابوالعلا

محمد ابوالعلا

    مشترك

  • الأعضــاء
  • 110 مشاركة
  • الاسم الأول:محمد
  • اسم العائلة:ابوالعلا
  • البـلـد: Country Flag

تاريخ المشاركة 15 February 2010 - 12:36 AM

تطبيق المثال على جدول الموظفين

BEGIN SELECT TO_CHAR(SYSDATE,'MM') INTO :GLOBAL.SYS FROM DUAL;

IF :GLOBAL.SYS= '01' THEN
SELECT SUM(NVL(SALARY,0))+SUM(NVL(COMMISSION_PCT,0)) INTO :GLOBAL.DIS FROM EMPLOYEES
WHERE TO_CHAR(HIRE_DATE,'MM')='01';
ELSE
SELECT LAST_DAY(HIRE_DATE) INTO :GLOBAL.NEW FROM EMPLOYEES
WHERE TO_CHAR(HIRE_DATE,'MM')=TO_CHAR(SYSDATE,'MM')-1;

:GLOBAL.NEW:=:GLOBAL.NEW+1;

INSERT INTO EMPLOYEES VALUES (:GLOBAL.NEW);
END IF;
END;
شرح الكود
هات تاريخ السيرفر وضعة فى متغير عام
واختبر المتغير العام هل يساوى شهر 1
لو بيساوى شهر 1 هات اجمالى مجموع المرتبات ومجموع الحوافز وضعها فى متغير عام لما بيكون الشهر هو شهر 1
غير كدة يعنى لو مش بيساوى شهر 1
هات اخر يوم فى الشهر وضعة فى متغير عام لما بيكون الشهر بيساوى الشهر الماضى
وزو د علية يوم واحد على المتغير العام المشحون باخر يوم فى الشهر علشان يجبلى الشهر الجديد
وادرج الشهر الجديد فى الجدول
ممكن اضع حقول اخرى غير التاريخ
اما بالنسبة SQL SERVER فليس لدى خبرة
MOHAMED ABOUELELA
[email="MOHAMED_DEV2000@YAHOO.COM"][/email]

تم التعديل بواسطة محمد ابوالعلا, 15 February 2010 - 12:39 AM.