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

كيف يمكن الحصول على السجل السابق ؟؟؟


Delicate_Shadow

Recommended Posts

السلام عليكم
شباب أبغى اعرف كيف استعمل قيمة موجوده في السجل السابق للسجل اللي أنا فيه
يعني مثلاً اذا كانت القيمة الموجوده في الحقل السابق 100 فا اللي بعدة راح تكون 100+5 فرضاً
طبعاً الموضوع اللي عندي اعقد من كذا بكثير
و المشكلة الأكبر انها لازم تتم خلال select statement يعني ما اقدر استعمل جدول أو trigger
أو اذا ممكن استعملها في التقارير مع العلم ان الجملة عبارة عن 6 جمل مع union و المشكلة هذي في حالة وحدة بس من ال6 حالات
اتمنى اني شرحت المشكلة بشكل واضح
و ألف شكر على تعاونكم مقدماً

رابط هذا التعليق
شارك

شباب لقيت FUNCTION اسمها LAG

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

رابط هذا التعليق
شارك

  • بعد 3 سنة...
ياريت حد يقولي الدالة دي بتتنفذ ازاي مع السيكول سيرفر 2005
لأني لم استطيع ان اطبقها في السيكول سيرفر


الأخ الكريم ، عليك دائماً أن تميز بين نوع ونوع من قواعد البيانات ... فالـ SQL-Server غير Oracle وغير Access وغير FoxPro وغير MySQL وغير DBase وغير DB2 و غير .......................... الي آخرة

فبدايتاً يجب أن تعلم أن هناك فرق بين سيكوال وأوراكل ، ونحن الآن في منتدي أوراكل وليس سيكوال !!!

عموماً أنا وجدت الأمر LAG داخل SQL-Server 2000 ولكنني لم أتعامل مع هذه الوظيفة من قبل ، حتي داخل أوراكل نفسها ، بس من الواضح أنها دالة لزيزة ونشكرك علية.

لكن كمبدئياً يمكنك إستخدام الكونسيبت الذي يمكننا تطبيقة علي أي نوع آخر من أنواع قواعد البيانات مثل السيكوال والأكسيس والأوراكل ، أنظر الكود :

CREATE TABLE EMPLOYEES
(
 EMPLOYEES_NO   NUMBER(10),
 EMPLOYEES_NAME VARCHAR2(30),
 CONSTRAINT PK_EMPLOYEES PRIMARY KEY(EMPLOYEES_NO),
 CONSTRAINT UQ_EMPLOYEES_NAME UNIQUE(EMPLOYEES_NAME)
)
/
INSERT INTO EMPLOYEES VALUES(1,'Ahmed');
INSERT INTO EMPLOYEES VALUES(2,'Mostapha');
INSERT INTO EMPLOYEES VALUES(3,'Sara');
COMMIT;

-- Next Record --
SELECT EMPLOYEES_NO, (SELECT MIN(E.EMPLOYEES_NO) 
				  FROM EMPLOYEES E 
				  WHERE E.EMPLOYEES_NO > EMPLOYEES.EMPLOYEES_NO) 
				  AS NEXT_EMPLOYEE 
FROM EMPLOYEES;

-- Back Record --
SELECT EMPLOYEES_NO, (SELECT MAX(E.EMPLOYEES_NO) 
				  FROM EMPLOYEES E 
				  WHERE E.EMPLOYEES_NO < EMPLOYEES.EMPLOYEES_NO) 
				  AS NEXT_EMPLOYEE 
FROM EMPLOYEES;




عموماً سأحاول علي قدر إستطاعتي البحث عن الأمر LAG داخل السيكوال وسأخبرك بمشيئة الله تعالي

أما بخصوص الأوراكل فيمكنك تطبيق المثال السابق ، أو تطبيقة علي الأوراكل كما يل :

select employees_no, (lag(employees_no,1) over (order by employees_no)) As Next_Employee from employees;



وأللي فهمتة من هذه الدالة أنها بتبسط عملية الجلب للسجل التالي بإستخدام تركيبة (lag(employees_no,1) over (order by employees_no)) ، حيث بدأ بالجملة lag وتم تحديد الحقل الذي سيجلب منه القيمة Employees_No ، وبعد كدة حددنا الخطوة ألي هيختوها ، والخطوة هو نقل قيمة حقل Employees_No الي السجل التالي ، لكن لو حبينا ننقلها للسجل بعد التالي ، يبقي هنغير قيمة الخطوة من 1 الي 2 .... وهكذا.

أما بخصوص over (order by employees_no) فدة علشان يعمل ترتيب تصاعدي للحقل المحدد ، علشان يجلب القيمة سواء تصلعدياً أو تنازلياً.


مفيش أحسن من شغل الكونسيبت !!!!



بالتوفيق

رابط هذا التعليق
شارك

السلام عليكم
بداية كل عام وانت بخير ؛ اولا هي دالة متميزة وقد اسعفتني من قبل فى اكثر من عمل وخاصة التقارير ؛ ولكن لو لاحظت انها فى عرضها للناتج تجد هناك عمودين الاول وهو الرقم الوظيفي مثلا وبه 14 بيان والحقل الثاني به 11 بيان هذا لو انك جعلت فى ALG 3 وعليه يقوم بعرض 3 اول حقول خالية اى NULL ؛ دعنا نعكس الامور ففرضا ان الناتج المرتجع به اول 3 حقول خالية NULL وانت تريد ان يقوم المؤشر على الفورم بالوقوف والقراءة على الريكورد الرابع الذى به قيمة ؛ هل جربتها من قبل ؟ :(
وشكرا
ميجا
مبرمج اوراكل بوزارة الانتاج الحربي
محاضر اوراكل بمركز الدراسات والبحوث

تم تعديل بواسطة khaledmega
رابط هذا التعليق
شارك

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

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

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

×   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

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

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

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