بتاريخ: 27 يوليو 200520 سنة comment_42825 بسم الله الرحمن الرحيم أخواني عندي مشكلة بسيطة وأتمنى مساعدتكم لي هي تتعلق ب: Set Operator وبالتحديد جملة Union المشكلة تتلخص كما يلي:اذا عندي الكود التالي : select a,b from tab1 union select a,c from tab2 طبعا النتيجة راح تكون عمودين , العمود الأول أسمه A والعمود الثاني أسمه B .ويحتويان على مجموعه من السجلات غير المكررة و الموجودة في الجدولين . والشكل هذا يعطي مثال للنتيجةa ba1 b1a1 c1a2 b2a2 c2.................................... وهكذااستفساري هو :كيف أقدر اخلي النتيجة تظهر في ثلاثة اعمدة مع تجاهل تكرار العمود a يعني ابغى النتيجة تكون زي كذا :a b ca1 b1 c1a2 b2 c2............................................... وهكذا أتمنى أنكم تكونو فهمتوني , أنا ابغى الحل بأستخدام Unionوانا شاكر لكم جدا تعاونكمأخوكم عدنان تقديم بلاغ
بتاريخ: 27 يوليو 200520 سنة comment_42829 select a , b , to_number(null) c from table1unionselect a , to_number(null) b , cfrom table2 تقديم بلاغ
بتاريخ: 27 يوليو 200520 سنة comment_42830 أخي العزيز وضعنا to_number على افتراض ان النوع البياني للحقل numberفلو كان char نضع to_char أرجو ان يكون هذا ما تقصد وان نكون قد بلغنا تقديم بلاغ
بتاريخ: 27 يوليو 200520 سنة comment_42831 الاخ الكريمعملية استرجاع البيانات او الاستفسار عنها عن طريق UNION هي استفسار يتم اذا لم يجد في الجدول الاول يجب ان يجده في الجدول الثاني وهكذا مع ملاحظة تشابة اسماء الحقول ويمكن التغلب عليها كما يلي select a S1,b S2 from tab1 union select a S1, c S2 from tab2 في هذه الحالة يرجع البيانات في نفس اسم الحقل S1,S2ولتفادي التكرار اكتب التالي select DISTINCT a S1,b S2 from tab1 union select DISTINCT a S1, c S2 from tab2 ولاظهار البيانات بالشكل a b ca1 b1 c1a2 b2 c2 اكتب التاليselect a S1, b S2, to_number(null) c S3 from table1 union select a S1, to_number(null) b S2, c S3 from table2 تم تعديل 27 يوليو 200520 سنة بواسطة Admin05 تقديم بلاغ
بتاريخ: 27 يوليو 200520 سنة كاتب الموضوع comment_42834 بسم الله الرحمن الرحيم أخواني أشكر لكم ردودكم وسرعة تفاعلكم .بالنسبة للحلول المقترحة , في الحقيقة ليست هي المطلوبة في الحلول اللي اقترحتوها راح يتم تكرار السجل A وهي هذه المشكلة , اللهم انه في الحل اللي اقترحتوة راح يضيف عمود ثالث وراح يخلي قيمتة nullانا اللي ابغاه انه العمود الثالث C تتم أضافتة بس ما يكون nullابغى قيمتة تاخذ القيمة الموجودة في السجل الثاني لنفس قيم Aعني عشان ما ألخبطكم النتيجة اللي انتو أقترحتوها حتكون زي كذا:A B Ca1 b1 nulla1 null c1a2 b2 nulla2 null c2و الحل اللي أنا أدور علية هوه :A B Ca1 b1 c1a2 b2 c2ومشكورين جدا على أهتمامكم بالموضوعأخوكم عدنانO.C.P تقديم بلاغ
بتاريخ: 27 يوليو 200520 سنة comment_42837 الاخ الكريم لاحظ التالي select DISTINCT a S1,b S2 from tab1 union select DISTINCT a S1, c S2 from tab2 DISTINCT تشيل التكرار تمامااما بالنسبة للتكرار اللذي يحصل عندك لاختلاف اسماء الحقول بين الحقل الاول والثانيارجو ان تجرب التالي select DISTINCT a S1, b S2, to_number(null) S3 from table1 union select DISTINCT a S1, to_number(null) S2, c S3 from table2 تم تعديل 27 يوليو 200520 سنة بواسطة Admin05 تقديم بلاغ
بتاريخ: 27 يوليو 200520 سنة كاتب الموضوع comment_42838 الأخ Admin05شكرا لتواصلك ...يا أخي أنا جربت الكود اللي كتبتة , أما بخصوص جملة Distinct فكلامك مضبوط راح تشيل التكرار ,بس عشان أطمنك أنا العمود a هو Primary Key في الجدول يعني ما في داعي لجملة Distinvtما أدري بس أحس انه انا ما قدرت أوصلكم اللي أبغاةانا مو هدفي ترى أني ألغي التكرار , لا أبداانا هدفي أني اخلي العمود الثاني في جملة الSelect الثانية يظهر كعمود ثالث في الجداول النتيجةانتم تعرفون أنة النتيجة راح تكون عبارة عن عمودين بس وبنفس مسمى أعمدة الSelect الأولى .وشكرا مرة أخرى لك وللأخ connector أحس انة يشتغل ورى الكواليس تقديم بلاغ
بتاريخ: 27 يوليو 200520 سنة comment_42839 SELECT t1.A,t1.B,t2.C FROM(select a , b , rownum row_id1 from table1)T1,(select a , c , rownum row_id2 from table2)T2whererow_id1=row_id2; تقديم بلاغ
بتاريخ: 27 يوليو 200520 سنة كاتب الموضوع comment_42846 بسم الله الرحمن الرحيم أخ connector أنا من البداية أوضحت أني أبغى الحل بأستخدام جملة Union وهذا هو مربط الفرسعموما شكرا لمحاولاتكأنا قاعد أحاول و أنشاء الله أوصل للحل .أخوكمعدنان تقديم بلاغ
بتاريخ: 27 يوليو 200520 سنة comment_42888 أخي الكريم وضح التالي :1- هل حقل a في الجدول الثاني primary key .وإن شاء الله أستطيع أن أساعدك . وحاول تجرب group by , with , outer join with Unionوبالتوفيق .. تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.