mmmme بتاريخ: 22 فبراير 2008 تقديم بلاغ مشاركة بتاريخ: 22 فبراير 2008 ارجوكم مساعدتى فى تحقيق الاستعلامات المطلوبه هذه الجداول مع البيانات كامله CREATE TABLE CUSTOMER (CustNo number(3), CustName Varchar2(10) constraint customer_custname_nn Not Null, City VARCHAR2(10) DEFAULT 'Cairo', Phone CHAR(12), constraint customer_custno_pk PRIMARY KEY (CustNO)); --------------------------------- create table item (itemno number(2), itemname Varchar2(6), itemPrice number(3,2), qtyonhand number(3), constraint item_itemno_pk PRIMARY KEY (itemno), constraint item_qtyonhand_cc CHECK (qtyOnHand >=0)); -------------------------------- create table INVoice (invno number(4), invdate date, custno number(3) constraint invoice_custno_nn NOT Null, constraint invoice_invno_pk PRIMARY KEY (invno), constraint invoice_custno_fk FOREIGN KEY (custno) REFERENCES customer(custno)); --------------------------------- create table INVITEM (invno number (4), itemno number (2), Qty number (2) NOT NUll, Constraint INVITEM_invno_itemno_pk PRIMARY KEY (invno,itemno), Constraint INVITEM_invno_fk Foreign Key (invno) REFERENCES invoice (invno), CONSTRAINT INVITEM_itemno_fk FOREIGN KEY (itemno) REFERENCES item(itemno)); ---------------------------------- desc Customer; -- Insert Statment into TABLE CUSTOMER insert into Customer values (211,'Khalil','Cairo',Null); insert into Customer values (212,'Youseef','Cairo','002-546 1000'); insert into Customer values (225,'Ghada','Banha','044-234 2345'); insert into Customer values (239,'Hani','Alex','003-567 8899'); insert into Customer values (345,'Ayman','Cairo','002-624 2299'); insert into Customer values (444,'Bassem','Giza','00-388 3456'); insert into customer values (445,'soha','alex',''); insert into Customer values (447,'Noha','Giza',Null); insert into Customer values (449,'Kahled','Alex','003-578 3000'); ----------------------------------- desc item; -- insert statment into Table ITEM insert into item values (1,'screw',2.25,50); insert into item values (2,'Nut',5.00,110); insert into item values (3,'Bolt',3.99,75); insert into item values (4,'Hammer',9.99,125); insert into item values (5,'Washer',1.99,100); insert into item values (6,'Nail',0.99,300); ---------------------------------- desc invoice; -- Insert statment into TABLE INVOICE insert into Invoice values (1001,'5/5/2007',212); insert into Invoice values (1002,'17/1/2007',225); insert into Invoice values (1003,'23/1/2007',239); insert into Invoice values (1004,'14/8/2007',211); insert into Invoice values (1005,'1/9/2007',212); ---------------------------------- desc INVITEM; -- INSERT Statment Into TABLE INVITEM insert into invitem values (1001,1,5); insert into invitem values (1001,3,5); insert into invitem values (1001,5,9); insert into invitem values (1002,1,2); insert into invitem values (1002,2,3); insert into invitem values (1003,1,7); insert into invitem values (1003,2,1); insert into invitem values (1004,4,5); insert into invitem values (1005,4,10); المطلوب1- اعرض رقم واسم كل عميل بأجمالى مشتريات تزيد عن 50 .2-اعرض رقم واسم كل صنف غير مباع باى فاتوره ورصيده بالمخزن.3-اعرض رقم واسم كل عميل له اكثر من فاتوره .4-استخدم استعلام فرعى لعرض رقم واسم كل صنف يقل رصيده بالمخزن عن متوسط الارصده لجميع الاصناف .5-اعرض رقم واسم كل صنف غير مباع ويذيد رصيده عن رصيد كل الاصناف المباعه. اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
weloooo بتاريخ: 24 فبراير 2008 تقديم بلاغ مشاركة بتاريخ: 24 فبراير 2008 أخي الموضوع إن شاء الله سهل ولكن نرجو منك توضيح شرح بيانات الجداول وخصوصا جداول ال (invoice,invitem) حتى نتمكن من فهم وربط البيانات حسب النظام المرغوب اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
llord بتاريخ: 27 فبراير 2008 تقديم بلاغ مشاركة بتاريخ: 27 فبراير 2008 السلام عليكم-----------------------حاول تجرب الاستعلامات دى /* اعرض رقم واسم كل عميل بأجمالى مشتريات تزيد عن 50 . . */ SELECT c.custno, c.custname FROM customer c WHERE 50 < (SELECT SUM (qp) FROM (SELECT i.itemprice * it.qty qp, it.invno FROM item i, invitem it WHERE i.itemno = it.itemno) ii WHERE ii.invno IN (SELECT iv.invno FROM invoice iv WHERE iv.custno = c.custno)) /* اعرض رقم واسم كل صنف غير مباع باى فاتوره ورصيده بالمخزن. */ SELECT i.itemno, i.itemname FROM item i WHERE itemno NOT IN (SELECT itemno FROM invitem) /* -اعرض رقم واسم كل عميل له اكثر من فاتوره . */ SELECT c.custno, c.custname FROM customer c WHERE 1 < (SELECT COUNT (iv.invno) FROM invoice iv WHERE iv.custno = c.custno) /* استخدم استعلام فرعى لعرض رقم واسم كل صنف يقل رصيده بالمخزن عن متوسط الارصده لجميع الاصناف . */ SELECT i.itemno, i.itemname FROM item i WHERE i.qtyonhand < (SELECT AVG (ii.qtyonhand) FROM item ii) /*اعرض رقم واسم كل صنف غير مباع ويذيد رصيده عن رصيد كل الاصناف المباعه.*/ SELECT i.itemno, i.itemname FROM item i WHERE itemno NOT IN (SELECT itemno FROM invitem) AND i.qtyonhand > (SELECT MAX (ii.qtyonhand) FROM item ii WHERE EXISTS (SELECT iv.itemno FROM invitem iv WHERE ii.itemno = iv.itemno)) اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mmmme بتاريخ: 27 فبراير 2008 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 27 فبراير 2008 شكرااااااااااااااااااااا جزاك الله كل خير اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
abdo_its بتاريخ: 28 فبراير 2008 تقديم بلاغ مشاركة بتاريخ: 28 فبراير 2008 (معدل) بالنسبة للسؤال الرابع والخامس نرجوا التوضيح اكثر من ذلك لانى ممكن ان اقارن المتوسط للايتم كلها بما فيها الايتم الذى معى او كلها ما عدا الذى معى وكذلك السؤال الخامس اكبر حاجة لمين؟؟ تم تعديل 28 فبراير 2008 بواسطة abdo_its اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
abdo_its بتاريخ: 28 فبراير 2008 تقديم بلاغ مشاركة بتاريخ: 28 فبراير 2008 (معدل) ------------first question--------------- SELECT c.custno, c.custname FROM customer c WHERE 50 <( SELECT SUM (qty) FROM (SELECT i.itemprice * iv.qty qty,v.CUSTNO FROM item i, invitem iv,invoice v where i.ITEMNO=iv.ITEMNO and v.INVNO=iv.INVNO)qry where qry.CUSTNO=c.CUSTNO); ------------second question------------- SELECT i.itemno,i.itemname FROM item i WHERE not exists(select vi.ITEMNO from invitem vi where vi.ITEMNO=i.ITEMNO); ------------third question------------- SELECT c.custno, c.custname,count(v.CUSTNO) FROM customer c , invoice v WHERE (c.custno = v.custno) having count(v.CUSTNO)>0 group by c.custno, c.custname; ------------forth question------------ select i.ITEMNO,i.ITEMNAME,i.QTYONHAND from item i where i.QTYONHAND < (select avg(ii.QTYONHAND) from item ii); ------------fifth question------------ SELECT i.itemno,i.itemname FROM item i WHERE not exists (select vi.ITEMNO from invitem vi where vi.ITEMNO=i.ITEMNO) and i.QTYONHAND >(SELECT MAX (ii.qtyonhand) FROM item ii WHERE EXISTS (SELECT iv.itemno FROM invitem iv WHERE ii.itemno = iv.itemno)); ----------------------------------------- تم تعديل 28 فبراير 2008 بواسطة Amgad اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Shibeika بتاريخ: 28 فبراير 2008 تقديم بلاغ مشاركة بتاريخ: 28 فبراير 2008 السلام عليكم ورحمة الله وبركاتهإليك الحلول وبطريقة مختلفة علي حسب فهي مراعاة للسرعة التنفيذ والله أعلم. select c.custno,c.custname,iv.qty*i.itemprice Purchages from customer c,item i,invoice v,invitem iv where c.custno=v.custno and iv.invno=v.invno and iv.itemno=i.itemno and iv.qty*i.itemprice>50; select itemno,itemname,itemprice,qtyonhandfrom itemwhere itemno not in (select itemno from invitem)select c.custno,c.custname,count(*) NofInvoicefrom customer c,invoice vwhere c.custno=v.custnogroup by c.custno,c.custnamehaving count(*)>1;select itemno,itemname,qtyonhandfrom itemwhere qtyonhand <(select avg(qtyonhand) from item);select itemno,itemname,itemprice*qtyonhand balancefrom itemwhere itemno not in (select itemno from invitem)and itemprice*qtyonhand >(select sum(i.itemprice*iv.qty) from item i,invitem iv where i.itemno=iv.itemno) اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
جلال شواقفه بتاريخ: 28 فبراير 2008 تقديم بلاغ مشاركة بتاريخ: 28 فبراير 2008 شكرا لكم على هذه المشاركات والمعلومات اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mmmme بتاريخ: 29 فبراير 2008 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 29 فبراير 2008 شكرا جزيلا لكل النا الحلوه الى ساعدتنا فى هذا الموضوع اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.