الانتقال إلى المحتوى
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.

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

Featured Replies

بتاريخ:

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

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

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

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

بتاريخ:


السلام عليكم


انا فهمت من كلامك انك عاوز تجيب مجموع اكثر من حقل فى حالة اذا كان شهر 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

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

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

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

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


وشكرا

بتاريخ:

هنكتب نفس الكود مع تغيير هذه الجملة
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="[email protected]"][email protected][/email]

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

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

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

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

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

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

بتاريخ:

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

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="[email protected]"][/email]

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

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

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

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

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

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

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.