linda_3loosh بتاريخ: 30 يونيو 2007 تقديم بلاغ مشاركة بتاريخ: 30 يونيو 2007 السلام عليكم ، لدي الجداول التالية-جدول الزبائن : CUSTOMERS-جداول المبيعات : sales_mstr / sales_dtls-جدول خصومات الزبائن : customers_bu (يتم من خلالة تسديد قيمة المشتريات الآجلة للزبائن)اريد وضع استعلام تكون حقوله كالتالي :()1حقل التاريخ ------- (2)حقل خصومات الزبائن --------- (3)حقل المشتريات الآجلة للزبائنحسب الشروط التالية :(1) حقل التاريخ : ويتم اختيار كل الايام من جدول sales_mstr وcustomers_bu ، وقد تمت كتابة الكود كالتالي SELECT DISTINCT BU_DATE A FROM CUSTOMERS_BU WHERE( CUSTOMERS_BU.BU_DATE > = '20-JUN-2007' AND CUSTOMERS_BU.BU_DATE < = '24-JUN-2007' ) UNION SELECT DISTINCT S_DATE FROM SALES_MSTR WHERE (SALES_MSTR.S_DATE > = '20-JUN-2007' AND SALES_MSTR.S_DATE < = '24-JUN-2007' ); هنا انتهي الكود(2) حقل خصومات الزبائن : ويتم تجميع حساب الزبائن لكل تاريخ مقابل له في نفس الصف عندما رقم الزبون يساوي مثلا 25 ، وقد تمت كتابة الكود كالتالي : SELECT Nvl(SUM(BU_AMOUNT), 0) FROM CUSTOMERS_BU WHERE BU_DATE = '20-JUN-2007' AND C_ID =25 ; هنا انتهي الكودواعلم ان الكود به مشكلة تقريبا في حصر التاريخ(3) حقل المشتريات الآجلة للزبائن - يمكن انشاؤه في حالة نجاح إنشاء الحقل السابقوعند محاولة إنشاء الإستعلام بدمج الكودين بعباره واحده كالتالي SELECT(SELECT DISTINCT BU_DATE A FROM CUSTOMERS_BU WHERE( CUSTOMERS_BU.BU_DATE > = '20-JUN-2007' AND CUSTOMERS_BU.BU_DATE < = '24-JUN-2007' ) UNION SELECT DISTINCT S_DATE FROM SALES_MSTR WHERE (SALES_MSTR.S_DATE > = '20-JUN-2007' AND SALES_MSTR.S_DATE < = '24-JUN-2007' )),(SELECT Nvl(SUM(BU_AMOUNT), 0) FROM CUSTOMERS_BU WHERE BU_DATE = '20-JUN-2007' AND C_ID =25 ) FROM SALES_MSTR,CUSTOMERS_BU,CUSTOMERS; هنا إنتهي الكود فإنه تظهر رسالة الخطاء التالية :ERROR at line 1:ORA-01427: single-row subquery returns more than one rowارجو مساعدتكم في هذا الإستعلام المعقد اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
jamal_rrkk بتاريخ: 2 يوليو 2007 تقديم بلاغ مشاركة بتاريخ: 2 يوليو 2007 السلام عليكم ورحمة الله وبركاتهاختي الكريمةحسب الجداول التي تم ارفقها سابقا فإنجدول الزبائن : CUSTOMERS يحتوي علي الحقول التالية CREATE TABLE "NWARA"."CUSTOMERS"( "C_ID" NUMBER(9) NOT NULL, "C_NAME" VARCHAR2(75) NOT NULL, "C_CREDIT" NUMBER(9) NOT NULL); حيث العمود c_credit هوعبارة عن الرصيد الحالي للزبونجداول المبيعات : sales_mstr CREATE TABLE "NWARA"."SALES_MSTR"( "S_DATE" DATE NOT NULL, "S_NO" NUMBER(9) NOT NULL, "C_NAME" VARCHAR2(75) NOT NULL, "C_ID" NUMBER(9), "S_TOTAL" NUMBER(9) NOT NULL, CONSTRAINT "PK_SALES_MSTR" PRIMARY KEY("S_NO")); حيث العمود s_total هو عبارة عن المشتريات الاجلةجدول خصومات الزبائن : customers_bu (يتم من خلالة تسديد قيمة المشتريات الآجلة للزبائن)غير موجود حيث العمود BU_AMOUNT هو عبارة عن مجموع الخصوماتحيث من خلال هذه الجداول نريد الوصول إليالرصيد الإفتتاحي = (الرصيد الحالي+ مجموع الخصومات) - مجموع المشتريات الآجلةاذا ماتم كتابته في الاعلي صحيح اذا نحن نحتاج للوصول إلي مجموع الخصومات خلال السنة المالية الحالية حسب رقم الزبونكما نحتاج الوصول لمجموع المشتريات الاجلة التي تمت خلال السنة المالية الحالية حسب رقم الزبونفهل هذا هو المطلوبجزاكم الله كل خير السلام عليكم ورحمة الله وبركاتهاختي الكريمةحسب الجداول التي تم ارفقها سابقا فإنجدول الزبائن : CUSTOMERS يحتوي علي الحقول التالية CREATE TABLE "NWARA"."CUSTOMERS"( "C_ID" NUMBER(9) NOT NULL, "C_NAME" VARCHAR2(75) NOT NULL, "C_CREDIT" NUMBER(9) NOT NULL); حيث العمود c_credit هوعبارة عن الرصيد الحالي للزبونجداول المبيعات : sales_mstr CREATE TABLE "NWARA"."SALES_MSTR"( "S_DATE" DATE NOT NULL, "S_NO" NUMBER(9) NOT NULL, "C_NAME" VARCHAR2(75) NOT NULL, "C_ID" NUMBER(9), "S_TOTAL" NUMBER(9) NOT NULL, CONSTRAINT "PK_SALES_MSTR" PRIMARY KEY("S_NO")); حيث العمود s_total هو عبارة عن المشتريات الاجلةجدول خصومات الزبائن : customers_bu (يتم من خلالة تسديد قيمة المشتريات الآجلة للزبائن)غير موجود حيث العمود BU_AMOUNT هو عبارة عن قيمة الخصومات التي تمتحيث من خلال هذه الجداول نريد الوصول إليالرصيد الإفتتاحي = (الرصيد الحالي+ مجموع الخصومات) - مجموع المشتريات الآجلةاذا ماتم كتابته في الاعلي صحيح اذا نحن نحتاج للوصول إلي مجموع الخصومات خلال السنة المالية الحالية حسب رقم الزبونكما نحتاج الوصول لمجموع المشتريات الاجلة التي تمت خلال السنة المالية الحالية حسب رقم الزبونفهل هذا هو المطلوبجزاكم الله كل خير اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
linda_3loosh بتاريخ: 2 يوليو 2007 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 2 يوليو 2007 الجداول اعلاه كما يلي : -جدول الزبائن : CUSTOMERS CREATE TABLE "YRMOK"."CUSTOMERS" ( "C_ID" NUMBER(13) NOT NULL, "C_NAME" VARCHAR2(75) NOT NULL, "C_ADRS" VARCHAR2(255) NOT NULL, "C_PHONE" NUMBER(15) NOT NULL, "C_CREDIT" NUMBER(13) NOT NULL) ; -جداول المبيعات : sales_mstr / sales_dtls CREATE TABLE "YRMOK"."O_SALES_MSTR" ( "S_DATE" DATE NOT NULL, "C_NAME"VARCHAR2(75) NOT NULL, "S_NO" NUMBER(13) NOT NULL, "C_ID" NUMBER(13), "S_TOTAL" NUMBER(13) NOT NULL, "PAY_MTHD" VARCHAR2(13) NOT NULL, CONSTRAINT "PK_O_SALES_MSTR" PRIMARY KEY("S_NO"), CONSTRAINT PAY_O_SALES_MTHD CHECK(PAY_MTHD IN ('CASH','DEFERED','CHECKS'))); CREATE TABLE "YRMOK"."O_SALES_DTLS" ( "S_NO" NUMBER(13) NOT NULL, "CAT_ID" NUMBER(5) NOT NULL, "PRICE" NUMBER(10) NOT NULL, "CAT_QUANT" NUMBER(7) NOT NULL, CONSTRAINT "FK_O_SALES_TOTAL" FOREIGN KEY("S_NO") REFERENCES "YRMOK"."O_SALES_MSTR"("S_NO")) ; -جدول خصومات الزبائن : customers_bu (يتم من خلالة تسديد قيمة المشتريات الآجلة للزبائن) CREATE TABLE "YRMOK"."CUSTOMERS_BU" ( "BU_DATE" DATE NOT NULL, "BU_NO" NUMBER(13) NOT NULL, "C_ID" NUMBER(13) NOT NULL, "BU_AMOUNT" NUMBER(13, 2) NOT NULL, "BU_FOR" VARCHAR2(75 byte), CONSTRAINT "PK_CUSTOMERS_BU" PRIMARY KEY("BU_NO")); ما أريده هو ما كتبته في الأعلى بالضبط (بإختصار :حساب حركة الزبون)اشكرك كثيرا اخي jamal_rrkk وارجو متابعة الموضوع اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
jamal_rrkk بتاريخ: 3 يوليو 2007 تقديم بلاغ مشاركة بتاريخ: 3 يوليو 2007 السلام عليكم ورحمة الله وبركاتهأختي الكريمة Select c_id , nvl(sum(s_total),0) From o_sales_mstr Where to_number(to_char(s_date,’yyyy’)) <> to_number(to_char(sysdate,’yyyy’)) Group by c_id; Select c_id , nvl(sum(bu_amount),0) From customers_bu Where to_number(to_char(bu_date,’yyyy’)) <> to_number(to_char(sysdate,’yyyy’)) Group by c_id; حسب الكود السابق الرصيد الافتتاحي = nvl(sum(s_total),0) - nvl(sum(bu_amount),0) آو حسب الكود التالي Select c_id , c_name , c_credit from customers; Select c_id , nvl(sum(s_total),0) From o_sales_mstr Where to_number(to_char(s_date,’yyyy’)) = to_number(to_char(sysdate,’yyyy’)) Group by c_id; Select c_id , nvl(sum(bu_amount),0) From customers_bu Where to_number(to_char(bu_date,’yyyy’)) = to_number(to_char(sysdate,’yyyy’)) Group by c_id; الرصيد الافتتاحي = c_credit + nvl(sum(bu_amount),0) - nvl(sum(s_total),0) فهل هذه النتيجة صحيحة أم لا ارجوا تجربة الاكواد السابقة اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
omdawebs بتاريخ: 6 نوفمبر 2008 تقديم بلاغ مشاركة بتاريخ: 6 نوفمبر 2008 السلام عليكم ، انا ايضا احتاج لهذا السؤال ، وقمت بتطبيق ما سبق لكن لم ينفذ المطلوب ، ارجو من الأخوة المحترفين التكرم بإجابة مفصلة وشافيةتحياتي اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.