Delicate_Shadow بتاريخ: 5 سبتمبر 2005 تقديم بلاغ مشاركة بتاريخ: 5 سبتمبر 2005 السلام عليكمشباب أبغى اعرف كيف استعمل قيمة موجوده في السجل السابق للسجل اللي أنا فيه يعني مثلاً اذا كانت القيمة الموجوده في الحقل السابق 100 فا اللي بعدة راح تكون 100+5 فرضاً طبعاً الموضوع اللي عندي اعقد من كذا بكثير و المشكلة الأكبر انها لازم تتم خلال select statement يعني ما اقدر استعمل جدول أو trigger أو اذا ممكن استعملها في التقارير مع العلم ان الجملة عبارة عن 6 جمل مع union و المشكلة هذي في حالة وحدة بس من ال6 حالاتاتمنى اني شرحت المشكلة بشكل واضح و ألف شكر على تعاونكم مقدماً اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Delicate_Shadow بتاريخ: 5 سبتمبر 2005 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 5 سبتمبر 2005 شباب لقيت FUNCTION اسمها LAG بس مشكلتها انها تجيب القيمة الموجودة في الجدول مو القيمة الموجودة في الاستعلامفا أنا مازلت في انتظار اقتراحاتكم اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Delicate_Shadow بتاريخ: 5 سبتمبر 2005 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 5 سبتمبر 2005 هذا شرح الـFUNCTIONhttp://www.adp-gmbh.ch/ora/sql/analytical/lag.html اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
SQL_STAR بتاريخ: 12 سبتمبر 2005 تقديم بلاغ مشاركة بتاريخ: 12 سبتمبر 2005 اشكرك اخي على هذا االشرح المبسط وجزاك الله الف خير ونحن في انتظار الدرس القادموشكرا اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
MohamedAliSalim بتاريخ: 29 نوفمبر 2008 تقديم بلاغ مشاركة بتاريخ: 29 نوفمبر 2008 ياريت حد يقولي الدالة دي بتتنفذ ازاي مع السيكول سيرفر 2005لأني لم استطيع ان اطبقها في السيكول سيرفر اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
K a n d i L بتاريخ: 5 ديسمبر 2008 تقديم بلاغ مشاركة بتاريخ: 5 ديسمبر 2008 اخي بارك الله فيك ممكن تشرح المشكلة بتفصيل أكثر اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
MMA بتاريخ: 5 ديسمبر 2008 تقديم بلاغ مشاركة بتاريخ: 5 ديسمبر 2008 ياريت حد يقولي الدالة دي بتتنفذ ازاي مع السيكول سيرفر 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) فدة علشان يعمل ترتيب تصاعدي للحقل المحدد ، علشان يجلب القيمة سواء تصلعدياً أو تنازلياً.مفيش أحسن من شغل الكونسيبت !!!!بالتوفيق اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
khaledmega بتاريخ: 7 ديسمبر 2008 تقديم بلاغ مشاركة بتاريخ: 7 ديسمبر 2008 (معدل) السلام عليكمبداية كل عام وانت بخير ؛ اولا هي دالة متميزة وقد اسعفتني من قبل فى اكثر من عمل وخاصة التقارير ؛ ولكن لو لاحظت انها فى عرضها للناتج تجد هناك عمودين الاول وهو الرقم الوظيفي مثلا وبه 14 بيان والحقل الثاني به 11 بيان هذا لو انك جعلت فى ALG 3 وعليه يقوم بعرض 3 اول حقول خالية اى NULL ؛ دعنا نعكس الامور ففرضا ان الناتج المرتجع به اول 3 حقول خالية NULL وانت تريد ان يقوم المؤشر على الفورم بالوقوف والقراءة على الريكورد الرابع الذى به قيمة ؛ هل جربتها من قبل ؟ وشكراميجامبرمج اوراكل بوزارة الانتاج الحربي محاضر اوراكل بمركز الدراسات والبحوث تم تعديل 7 ديسمبر 2008 بواسطة khaledmega اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.