27-01-16, 03:01 AM
السلام عليكم...
عندما تستخدم جملة استعلام بهذا الشكل:
دون تحديد علاقة بين الجدولين، فأنت تلقائياً تنشئ علاقة من النوع Cross Join أي علاقة تقاطع بين الجدولين حيث يتم ربط كل سجل من الجدول الأول بجميع السجلات من الجدول الثاني (لأن محرك قواعد البيانات في هذه الحالة لا يعرف كيف يربط بين السجلات). عدد السجلات الناتجة سيكون حاصل ضرب عدد السجلات المسترجعة من الجدولين. فإذا مثلاً أعاد الاستعلام سجلين من الجدول الأول و ثلاثة سجلات من الجدول الثاني فإن الناتج سيكون ستة سجلات (2 × 3).
للحصول على سجل واحد (أو سجلات مترابطة) من الجدولين يجب بناء علاقة ربط (Join) بينهما. نفرض أن ما يربط الجدولين هو رقم الطالب (الحقل student_id) الموجود في كلا الجدولين:
موضوع علاقات الربط موسع قليلاً، و لكن أساسياته متشابهة في كل قواعد البيانات.
نرجو الاستفادة و السلام.
عندما تستخدم جملة استعلام بهذا الشكل:
كود :
SELECT * FROM [hagz1],[hagz2] WHERE [studntname] = @nameدون تحديد علاقة بين الجدولين، فأنت تلقائياً تنشئ علاقة من النوع Cross Join أي علاقة تقاطع بين الجدولين حيث يتم ربط كل سجل من الجدول الأول بجميع السجلات من الجدول الثاني (لأن محرك قواعد البيانات في هذه الحالة لا يعرف كيف يربط بين السجلات). عدد السجلات الناتجة سيكون حاصل ضرب عدد السجلات المسترجعة من الجدولين. فإذا مثلاً أعاد الاستعلام سجلين من الجدول الأول و ثلاثة سجلات من الجدول الثاني فإن الناتج سيكون ستة سجلات (2 × 3).
للحصول على سجل واحد (أو سجلات مترابطة) من الجدولين يجب بناء علاقة ربط (Join) بينهما. نفرض أن ما يربط الجدولين هو رقم الطالب (الحقل student_id) الموجود في كلا الجدولين:
كود :
SELECT * FROM hagz1
INNER JOIN hagz2 ON hagz1.student_id = hagz2.student_id
WHERE studntname = @nameموضوع علاقات الربط موسع قليلاً، و لكن أساسياته متشابهة في كل قواعد البيانات.
نرجو الاستفادة و السلام.
بِسْمِ اللهِ الرَّحْمَنِ الرَّحِيمِ ( وَ مَا تُقَدِّمُوا لِأَنفُسِكُم مِّنْ خَيْرٍ تَجِدُوهُ عِندَ اللهِ هُوَ خَيْراً وَ أَعْظَمَ أَجْراً ) صَدَقَ اللهُ الْعَظِيمُ
