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

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

صورة
- - - - -

إستعلام معقد ارجو مساعدة المحترفين


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

#1 linda_3loosh

linda_3loosh

    مشترك

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

تاريخ المشاركة 30 June 2007 - 07:16 PM

السلام عليكم ، لدي الجداول التالية
-جدول الزبائن : 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
ارجو مساعدتكم في هذا الإستعلام المعقد

#2 jamal_rrkk

jamal_rrkk

    عضو نشط

  • الأعضــاء
  • 452 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 02 July 2007 - 02:28 PM

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

اختي الكريمة

حسب الجداول التي تم ارفقها سابقا فإن

جدول الزبائن : 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 هو عبارة عن قيمة الخصومات التي تمت

حيث من خلال هذه الجداول نريد الوصول إلي

الرصيد الإفتتاحي = (الرصيد الحالي+ مجموع الخصومات) - مجموع المشتريات الآجلة


اذا ماتم كتابته في الاعلي صحيح اذا نحن نحتاج

للوصول إلي مجموع الخصومات خلال السنة المالية الحالية حسب رقم الزبون
كما نحتاج الوصول لمجموع المشتريات الاجلة التي تمت خلال السنة المالية الحالية حسب رقم الزبون

فهل هذا هو المطلوب

جزاكم الله كل خير


قال تعالى :

{ وَمَا خَلَقْتُ الْجِنَّ وَالْإِنسَ إِلَّا لِيَعْبُدُونِ مَا أُرِيدُ مِنْهُم مِّن رِّزْقٍ

وَمَا أُرِيدُ أَن يُطْعِمُونِ إِنَّ اللَّهَ هُوَ الرَّزَّاقُ ذُو الْقُوَّةِ الْمتينُ }

[ الذاريات : 56 : 58 ]


{ وَأْمُرْ أَهْلَكَ بِالصَّلَاةِ وَاصْطَبِرْ عَلَيْهَا لَا نَسْأَلُكَ رِزْقًا

نَحْنُ نَرْزُقُكَ وَالْعَاقِبَةُ لِلتَّقْوَى }

[ طه : 131 ]




سبحان الله والحمد لله والله أكبر


http://tech.groups.y...and_Accounting/

#3 linda_3loosh

linda_3loosh

    مشترك

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

تاريخ المشاركة 02 July 2007 - 07:11 PM

الجداول اعلاه كما يلي :
-جدول الزبائن : 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 وارجو متابعة الموضوع

#4 jamal_rrkk

jamal_rrkk

    عضو نشط

  • الأعضــاء
  • 452 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 03 July 2007 - 03:54 PM

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

أختي الكريمة

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)


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

{ وَمَا خَلَقْتُ الْجِنَّ وَالْإِنسَ إِلَّا لِيَعْبُدُونِ مَا أُرِيدُ مِنْهُم مِّن رِّزْقٍ

وَمَا أُرِيدُ أَن يُطْعِمُونِ إِنَّ اللَّهَ هُوَ الرَّزَّاقُ ذُو الْقُوَّةِ الْمتينُ }

[ الذاريات : 56 : 58 ]


{ وَأْمُرْ أَهْلَكَ بِالصَّلَاةِ وَاصْطَبِرْ عَلَيْهَا لَا نَسْأَلُكَ رِزْقًا

نَحْنُ نَرْزُقُكَ وَالْعَاقِبَةُ لِلتَّقْوَى }

[ طه : 131 ]




سبحان الله والحمد لله والله أكبر


http://tech.groups.y...and_Accounting/

#5 omdawebs

omdawebs

    مشترك

  • الأعضــاء
  • 104 مشاركة
  • الاسم الأول:عماد الدين
  • اسم العائلة:على
  • البـلـد: Country Flag
  • الاهتمامات:ADF & JDeveloper, Oracle Fusion Applications, E-Business suite Oracle HA & MAA solutions, Identity Manager, GoldenGate, Oracle BI
  • المنصب الحالي:Sr. Application &amp; Database Consultant

تاريخ المشاركة 06 November 2008 - 07:25 PM

السلام عليكم ، انا ايضا احتاج لهذا السؤال ، وقمت بتطبيق ما سبق لكن لم ينفذ المطلوب ، ارجو من الأخوة المحترفين التكرم بإجابة مفصلة وشافية



تحياتي