بتاريخ: 9 سبتمبر 200718 سنة comment_109514 عندي 3 جداول الاول جدول العناصر فيه رقم العنصر و اسمة فقط و الجدول التاني جدول الاشخاص فيه رقم الشخص و اسمة بس (مع ملاحظة ان الشخص في هذا الجدول من الممكن ان يكون عميل او مورد )و الجدول التالت فية رقم العنصر الموجود في الجدول الاول و فية رقم العميل و رقم المورد و السعرو المطلوب عايز اعمل جملة سليكت يظهر لي اسم العنصر و اسم المورد و اسم العميل و السعر المشكلة التانية عندي جدول ما موجود به عمود لارقام التليفونات و نوع الداتا char و المطلون اني اعمل constraint يجبر الuser انه يدخل ارقام بس مش حروف ارجو الرد سريعا من فضلكم جزاكم الله خيرا أحمد عمران [email protected][email protected] تقديم بلاغ
بتاريخ: 10 سبتمبر 200718 سنة comment_109602 لو فرضنا انه جدول العناصر اسمه elements وفيه ENO ENAME وجدول الأشخاص اسمه persons وفيه PNO PNAMEوالجدول الثالث اسمه elem_pers وفيهENO رقم العنصر CNO رقم العميل(Customer)SNO رقم المورد(Supplier)PRICE السعرفتكون جملة ال select كالتالي: select e.ename , c.pname as "customer", s.pname as "supplier", ep.price from elem_pers ep , elements e , persons c , persons s where ep.eno = e.eno and ep.cno = c.pno and ep.sno = s.pno يعني ببساطة انت راح تتخيل انه في عندك جدولين بدلا من جدول واحد مرة بتنظر لجدول الأشخاص على انه جدول العملاء ومرة بتنظر لجدول الأشخاص انه جدول الموزعين.وهي جمل بناء الجداول للتجريب create table elements (eno number(5) primary key , ename varchar2(20)); create table persons (pno number(5) primary key , pname varchar2(20)); create table elem_pers (eno number(5) references elements(eno) , cno number(5) references persons(pno) , sno number(5) references persons(pno) , price number (10,3)); وبالنسبة للمشلكة الثانية غير خصائص التلفون data type : numberوبهيك بتجبر المستخدم عاى ادخال رقم بدون ما تغلب حالك بالكود ولما تتخزن اوراكل بتحولها ل char بدون اي كود تقديم بلاغ
بتاريخ: 10 سبتمبر 200718 سنة كاتب الموضوع comment_109612 انا متشكر جدا لحضرتك جزاك الله خيرا تقديم بلاغ
بتاريخ: 10 سبتمبر 200718 سنة كاتب الموضوع comment_109623 للاسف يا باشا مشتغلتشمشيت ورا الاكواد اللي كتبتها بالضبط و عملت insert لداتا وهمية و لما كتب جملة السليكت مشتغلتشcreate table elements (eno number(5) primary key , ename varchar2(20));create table persons (pno number(5) primary key , pname varchar2(20));create table elem_pers (eno number(5) references elements(eno) ,cno number(5) references persons(pno) ,sno number(5) references persons(pno) ,price number (10,3));insert into elements values (1 ,'heater');insert into elements values (2 ,'air condition');insert into persons values (1 ,'ahmed supp');insert into persons values (2 ,'ahmed customer');insert into elem_pers values (1 ,1 ,null ,400);insert into elem_pers values (2 ,null ,2 ,1000);select e.ename , c.pname as "customer", s.pname as "supplier", ep.pricefrom elem_pers ep , elements e , persons c , persons s where ep.eno = e.eno and ep.cno = c.pno and ep.sno = s.pno تقديم بلاغ
بتاريخ: 10 سبتمبر 200718 سنة comment_109626 مشتغلتش يا باشا لأنه انت بتخلي رقم المورد null او حتى رقم العميلوعشان تشتغل معك مية بالمية لازم تغير في الjoin بحيث انك تضيف (+) عند جدول الأشخاص لتصبح الجملة كالتالي: select e.ename , c.pname as "customer", s.pname as "supplier", ep.price from elem_pers ep , elements e , persons c , persons s where ep.eno = e.eno and ep.cno = c.pno(+) and ep.sno= s.pno(+) [/sq] [sql]select e.ename , c.pname as "customer", s.pname as "supplier", ep.price from elem_pers ep , elements e , persons c , persons s where ep.eno = e.eno and ep.cno = c.pno(+) and ep.sno= s.pno(+) تقديم بلاغ
بتاريخ: 10 سبتمبر 200718 سنة comment_109629 طريقة ثانية: select e.ename , c.pname as "customer", null as "supplier", ep.price from elem_pers ep , elements e , persons c where ep.eno = e.eno and ep.cno = c.pno union select e.ename , null , s.pname as "supplier", ep.price from elem_pers ep , elements e , persons s where ep.eno = e.eno and ep.sno= s.pno; تقديم بلاغ
بتاريخ: 10 سبتمبر 200718 سنة كاتب الموضوع comment_109633 الف شكر يا اخيبس كنت عايز افهم موضوع ال( + ) ده لاني اول مرة اشوف حاجه زي كده ياريت لو مفيهاش قلة ذوق تشرحها ليحاجه كمان في المشكلة التانية بتاعه رقم التليفون حضرتك قلت اني اخلي نوع الداتا number طب لو عايز ادخل رقم موبايل بيبدأ ب صفر يكون ازاي ؟انا تقلت عليك انا عارف سامحني تقديم بلاغ
بتاريخ: 10 سبتمبر 200718 سنة comment_109641 بالعكس أخ أحمد ما فيها قلة ذوق بالعكس احنا بنتعاون وبنساعد بعض وان شاء الله نظل هيك على طولوانا ان شاء الله غداً راح احضرلك شرح صغير عن الربط ومن ضمنها ال (+) وراح ابعثلك كود يمنع المستخدم من ادخال أحرف في خانة التلفونانا كنت حاب أجاوبك اليوم بس للأسف مشغول شوي وان شاء الله غداً بكون الشرح جاهزأخوك حمزة تقديم بلاغ
بتاريخ: 10 سبتمبر 200718 سنة كاتب الموضوع comment_109661 بارك الله فيك يا أخ حمزة و جزاك الله خير تقديم بلاغ
بتاريخ: 10 سبتمبر 200718 سنة comment_109679 بالنسبة للمشلة التانيةممن تخلية char وتزودcheck in(1,2,3,4,5,6,7,8,9,0,/) تقديم بلاغ
بتاريخ: 11 سبتمبر 200718 سنة comment_109711 أخ أحمد بالنسبة لموضوع ال join هو ببساطة كالتالي:لو انا طلبت منك تحضر اسماء الموظفين واسماء الأقسام اللي بشتغلوا فيها راح الجملة تكون كالتالي: select e.ename , d.dname from emp e , dept d where e.deptno = d.deptno; لو فرضنا انه عندي موظف غير تابع لأي دائرة او انه يوجد دائرة لا ينتمي اليها اي موظف واريد ان يظهروا في الإستعلام فأن الجملة السابقة لن تفي بالغرض لأنّ النتيجة ستكون فقط الموظفين الذين لديهم أقسام وهذا يسمى equi join أو inner join او simple joinلو طلب منك ان تحضر اسماء الموظفين واسماء أقسامهم بمن فيهم الذي ليس له دائرة فتكون الجملة كالتالي select e.ename , d.dname from emp e , dept d where e.deptno = d.deptno(+) ولو طلب منك ان تحضر اسماء الموظفين واسماء أقسامهم بمن فيه الأقسام التي لا يوجد فيها اي موظف فتكون الجملة select e.ename , d.dname from emp e , dept d where e.deptno(+) = d.deptno وهذا يسمى outer joinوان شاء الله تكون الفكرة وصلت وانصحك بقراءة فصل ال join من كتاب الاوراكل فهو بسيييييييييييط جداًواي خدمة ثانية انا جاهز تقديم بلاغ
بتاريخ: 11 سبتمبر 200718 سنة comment_109726 بالنسبة للمشكلة الثانية بتقدر تحلها زي ما قال أخونا asd202 وتعمل الشرط كالتالي alter table emp add constraint emp_tel_ck check (tel between '0000000' and '9999999') تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.