الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة فى ربط جدولين بالاوراكل

بدأه shizooo في 19 أكتوبر 2011 · 3 رد · 1,057 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

ده اول برنامج ليا كبير بقواعد البيانات برنامج صيدلية

بلغة سي شارب مع قاعده اوراكل

اتمنى من الاعضاء الكرام ان يشاركونى المشكلة

انا نزلت امثلة للتعامل مع ربط الجداول لكن بالفيجوال بيسك وايضا بقواعد اكسس او سكوال

انا اعلم ان الطرق متشابهة لكن كل ما اشتغل تفشل معايا

اخر حاجه كان بيعمل تكرار لسجل فى جدول الاب على حسب عدد السجلات المرتبطة به فى الابن

وكمان بيعرض فى الداتا جريد بتاعت الابن كل السجلات وليس السجلات الخاصة بسجل الاب

ياريت لو حد يفهمنى الحكاية من البداية ممكن اكون اخطات وياريت لو حتى ازاى اعمل جداول مرتبطة ببعضها فى الاوراكل

انا باعمل الاتصال كويس وباشتغل مع الاوراكل على كل جدول على حده بكل العمليات من استعلام الى حفظ وحذف وتعديل

لكن الارتباط لا ينجح

لو حتى جدولين جدول مستخدمين وجدول مخالفاتهم

وفيه مشكله ايضا بتواجهنى بالنسبة للتاريخ مع الاوراكل لا يحفظ الا بصيغة may/2000/11 وليس dd/mm/yyyy

انا كنت شغال على بروفايدر ole ولم تواجهنى مشكلة التاريخ وعرفت ان الاوراكل ليها بروفايدر اشتغلت عليه فواجهتنى مشكلة التارريخ

وشكرا لكل من قرا موضوعى

#2

السلام عليكم

مشكلة التاريخ ممكن تحلها عن طريق تحديد فرومات التاريخ من الويندوز في كنترول بانل

منحة للخريجين وطلاب الجامعات و المعاهد

دبلومة لتخريج مبرمج متخصص في هندسة صناعة البرمجيات وتصميم وبرمجة تطبيقات الأنترنت

سبحان الله وبحمده سبحان الله العظيم

#3

السلام عليكم ..

المفروض أن يكون الجدول الأب فيه مفتاح أساسي ...مثلا ..

CREATE TABLE supplier (
supplier_id numeric(10) not  null,
supplier_name  varchar2(50) not null
,contact_name  varchar2(50), 
CONSTRAINT supplier_pk PRIMARY KEY (supplier_id) );

و الجدول الأبن يكون فيه مفتاح ثانوي (غريب) عن طريق الــ Constraint المسمى FOREIGN KEY مثلا :

CREATE TABLE products (
product_id   numeric(10)  not null, 
supplier_id  numeric(10)  not null,
CONSTRAINT fk_supplier_comp FOREIGN KEY (supplier_id)  REFERENCES supplier(supplier_id));

طيب .. لو انت أنشأت الجداول و نسيت تعمل الــ Constraint .. ممكن تعمل تعديل على الجدول الأبن كمايلي :

ALTER TABLE products
  ADD CONSTRAINT fk_supplier  FOREIGN KEY (supplier_id)  REFERENCES supplier(supplier_id);

اقتباس

آخر حاجه كان بيعمل تكرار لسجل فى جدول الاب على حسب عدد السجلات المرتبطة به فى الابن

وكمان بيعرض فى الداتا جريد بتاعت الابن كل السجلات وليس السجلات الخاصة بسجل الاب

في مثالنا الجدول الأب هو Supplier و الجدول الأبن هو Product ..

طبعا كلنا يعرف أن فائدة المفتاح الثانوي هو الحفاظ على البيانات بحالة صحيحية (Consistency) .. أي يمنع إضافة سجل في جدول الأين دون أن يكون له سجل مرتبط به في جدول الأب . (أو يترك بقيمة null بشرط ان يسمح بقيم الــ null). مثلا في مثالنا يمنع إضافة منتج مع رقم المزود supplier_id دون أن تكون قيمة الــ supplier_id المضافة موجودة في جدول الــ supplier ..

لجلب الببانات من عدة جداول مربوطة لدينا ثلاث انواع للربط :

  • Inner Join :

و فيه نأخذ سجلات الجدول الأب التي لها مقابل في الجدول الأبن (مع مقابلاتها في الجدول الابن) و شكله :

SELECT * FROM Supplier , Product WHERE Supplier.supplier_id = Product.supplier_id


  • Left Outer Join :

و فيه نأخد كل سجلات الأب مع السجلات الموافقة لها من الابن إن وجدت أو يتم وضع null مكانها إن لم تكن موجودة

SELECT * FROM Supplier , Product WHERE Supplier.supplier_id = Product.supplier_id (+)

  • Right Outer Join :

و فيه نأخذ كل سجلات الابن مع سجلات الأب المرتبطة بها .. أما سجلات الأبن التي ليس لها سجلات أب فيتم وضع null .. في سجل الأب ..
SELECT * FROM Supplier , Product WHERE Supplier.supplier_id (+)= Product.supplier_id



ملاحظات :

  1. لا أعرف هل أوراكل يدعم العبارة LEFT OUTER JOIN مباشرة أم لا ...
  2. يمكن عمل الــ Foreign key من خلال الــ Enterprise Manager للأوراكل (الأداة المرئية التي نفتح بها القاعدة .. حسب إصدار الأوراكل )

تم تعديل هذه المشاركة بواسطة houssam11350_11350 في 20 أكتوبر 2011 في 10:13

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#4

شكرا لكم واسف على تاخر الرد

لانى حاولت كتير قبل ما ارد الان

ولسه مش نافع

مواضيع مشابهة