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

سؤال بسيط بخصوص العلاقات ..

مغلق
بدأه يوفي VIP في 26 أكتوبر 2007 · 9 رد · 826 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

كيف حالكم اخواني الكرام ان شاء الله بخير ..

يعلم الله أخواني الكرام "وحتى لا يزعل علينا المشرفين:)"بحثت كثيراً في المنتدى عن سؤالي ولم أجد ما يشفي غليلي بصراحة .. وبحكم اني مبتدئ في هذا المجال وخبرتي قليلة في المجال اسمحوا لي بهذا السؤال اخواني الكرام ..

الآن لدي جدولين

USER ويحتوي على الحقول

ID مفتاح اساسي

NAME

وجدول SUBJECT ويحتوي على الحول ..:

ID_NAME "مفتاح أجنبي"

SUB

المطلوب يا أخواني كيف اربط بين المفتاح الأساسي ID الموجود بجدول USER والحقل

ID_NAME الموجود بجدول الأعضاء من خلال جملة sql علماً بأني استخدم .::

SQL Server Management Studio Express

وبعد البحث والتحري شاهدت كود لأحد الأخوان في المنتدى بهذا الشكل :.

SELECT   s.stor_id, d.discounttype
FROM	 stores s JOIN discounts d
ON	   s.stor_id = d.stor_id

ما المقصود بكل من d و s .. وكيف يتم استخدامها ؟؟

** كيف لو تم حذف المفتاح الأساسي يحذف جميع المفاتيح الأجنبيه المرتبطه به ؟؟

** أرجوا الأهتمام أخواني الموضوع مهم جداً ..

وفقكم الله لكل خير ..

#2
اقتباس
SELECT s.stor_id, d.discounttype

FROM stores s JOIN discounts d

ON s.stor_id = d.stor_id

باالنسبة للكود

الـ sو d عبارة عن alias(اسم مستعار) للجدولين stores و discountsالمخزنين في قاعدة بيانات المستخدم.

تسطيع ان تستخدم اسماء الجداول مباشرة بدون ال alias ولكن فائدة ال alias هو للاختصار ويسهل عملية الكتابه فبدلا من ان تكتب اسم الجدوال كاملا تكتب ال alias الذي هو معنا في هذا الكود الـ s و d

اذا استخدمنا اسماء الجداول مباشرة بدون ال alias سيكون الكود با الشكل التالي

SELECT   stores.stor_id, discount.discounttype
FROM	 stores  JOIN discounts 
ON	   stores.stor_id = discount.stor_id

اما باالنسبه لكيفة ربط الجدولين الذي قمت بتكوينهم فهو نفس الكود السابق .

ملاحضه

يجب ان يكون المفتاح الاجنبي في الجدوال الاخر مطابق للمفتاح الاساس في الجدول الاول من حيث الاسم والبيانات .

بقدر الكد تكتسب المعالي ... ومن طلب العلا سهر الليالي

ومن رام العلى من غير كد ... أضاع العمر في طلب المحالِ

#3

سلمت يالغالي ..

الحمد لله وضح شيء كبير ..

لكن من السطر الثاني للأسف مش فاهمه يالغالي ..

شو معنى JOIN و ON ؟؟

وماذا لو كان هناك أكثر من جدولين مالصيغة التي ستكون عليها ؟؟

#4

بالنسبة ل join هي جملة تستخدم لربط جدول مع جدول والكلمة وتسبقها كلمات مثل inner left Right Outer وكل واحدة لها معنى . والكلمة on تستخدم لتحديد الحقول التي على اساسها سيتم ربط الجدولين .

لربط اكثر من جدول يمكنك عمل view وتحديد العلاقات بين الجدوال وستظهر لك النتيجة جاهزة .

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

وبالنسبة لملاحظة الاخ النورس

اقتباس
يجب ان يكون المفتاح الاجنبي في الجدوال الاخر مطابق للمفتاح الاساس في الجدول الاول من حيث الاسم والبيانات

لا اعرف ماذا قصد بتطابق الاسم والبيانات فالتطابق يجب ان يكون فقط في نوع والاسم غير مهم حيث يتم تحديد اسماء الحقول بعد كلمة on

#5

جزاك الله خير استاذ طارق ..

كفيت ووفيت يالغالي ..

وبالنسبة للملاحظة بالفعل أذكر بالاكسس كنت أعمل مثل ما أشرت إليه ولا أذكر ان هناك مشاكل ..

سؤال يالغالي واسمح لي على الإطاله : لو كان المفتاح الأساسي أكثر من حقل هل استخدم AND ؟ أم كيف تكون الطريقة ؟؟

- الأن مثل هذه الجملة وغيرها من الجمل .. هل هي نفسها بالحرف الواحد استخدمها لو اردت عمل ذلك في ASP.NET ؟ "أقصد بذلك طريقة الربط "

وفقكم الله لكل خير ..والمعذرة على اٌلإطاله..

#6

العفو يا جماعه على الخطاء فانا كنت اعتقد ان الاسم(المفتاح الاجنبي) في الجدول الفرعي يجب ان يكون موفقا للاسم في المفتاح الرئيسي ولكن اتضح كما تفضلتم انه ليس لازم فانا دئما عند استخدام المفتاح الاجني استخدمه موفقا للمفتاح الاساسي فاختلط علي الامر وانا اعتقد ان استخدام نفس الاسم يفيدك حتى تعرف انه مفتاح اجني عند ادخال البيانات اما با النسبه للبيانا فانا كنت اقصد نوع البيانات مثلا ..,integer,char وليس البيانت نفسها

وشكرا

بقدر الكد تكتسب المعالي ... ومن طلب العلا سهر الليالي

ومن رام العلى من غير كد ... أضاع العمر في طلب المحالِ

#7

جزاك الله خير يالغالي ..

ولا زلت بانتظار من يجيب على المشاركة رقم 5 :(

#8
 لو كان المفتاح الأساسي أكثر من حقل هل استخدم 
  AND

نعم

كذلك الجمل الاساسية لا تختلف عن الاكسس فهي نفس الاساس

ويمكنك استخدامها في لغات البرمجة كما هي وفي الفيجوال استوديو دوت نت يمكنك انشاء dataset وعمل هذه الاستعلامات بداخلها حيث يوجد معالج يمكنك من خلاله ربط الحقول اي دون استخدام الكتابة اليدوية او كما ذركت لك سابقا من خلال manage,emt studio يمكنك عمل view بحيث تقوم باضافو view جديدة واضافة الجداول عليها وستظهر مثل استعلام الاكسس ويمكنك بعد ذلك نسخ النتيجة الى الفيجوال استوديو دون تخزين ال view

#9

سؤال جميل :)

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

تم تعديل هذه المشاركة بواسطة ماجددج في 27 أكتوبر 2007 في 18:31

#10

شكراً على الموضوع

In order to understand recursion, one must first understand recursion

alawfiadel@yahoo.com

هذا الموضوع مغلق.

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