إنتقال للمحتوى

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

مــا فائدة الCross join ؟


5 رد (ردود) على هذا الموضوع

#1 كيوكمبر

كيوكمبر

    مشترك

  • الأعضــاء
  • 92 مشاركة

تاريخ المشاركة 27 July 2005 - 11:25 AM

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

سؤال خفيف على العقل:
ما فائدة الOracle properity:Cartesian Product
أو ال SQL 1999: Cross join ؟

#2 أسامة موسى

أسامة موسى

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 2,381 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 27 July 2005 - 12:01 PM

الاخ الكريم
فائدة Cross join تختصر يها where condtion عندما يكون عندك جملة Select statment لجدولين مختلفين كما في المثال التالي
SELECT

first_name,last_name,

department_name
FROM employees, departments;


وتحتاج هنا الى where condtion لعدم تكرار البيانات او عرض بيانات الجدولين بشكل متتالي
اما باستخدام cross join يمكنك اختصار ذلك وخصوصا في ان يكون الجدولين يحتوي على بيانات كثير كما في المثال
SELECT

first_name,

last_name,

department_name
FROM employees CROSS JOIN departments;

وليك ملف مرفق يشرح بشكل افضل

ملفات مرفقة


۩ اللهـــــــــــــــــــــــم صلي على سيدنا محمد وعلـى آله وصحبه أجمـعين ۩
۩ سبحـــــــــــــــــان الله وبحمده ....... سبحــــــــــــــــــــــــان الله العظيم ۩



يمكنك زيارتي على صفحتي الخاصة بالفيس بوك على الرابط AskOsama

يمكنك زيارتي على مدونتي الجديدة على الرابط http://askossama.blogspot.com

#3 alaahiakal

alaahiakal

    مشترك

  • الأعضــاء
  • 131 مشاركة

تاريخ المشاركة 27 July 2005 - 01:13 PM

و ايضا توضع لربط جدولين ومنع التكرار
Mr.CSS

#4 Osama Soliman

Osama Soliman

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 1,611 مشاركة
  • الاسم الأول:Osama
  • اسم العائلة:Soliman
  • البـلـد: Country Flag
  • المنصب الحالي:Oracle Technical Consultant - Asfour Crystal International

تاريخ المشاركة 27 July 2005 - 03:59 PM

الاخ الكريم / كيوكمبر
الاخوة الافاضل / الاعضاء فى هذه المشاركة

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

فعند تنفيذ هذه الجملة

Select e.last_name, d.departement_name
from employees e, Department d


فسوف يظهر عدد من الصفوف يساوى حاصل ضرب عدد الصفوف فى الجدول الأول مضروف فى عدد الصفوف فى الجدول الثانى

وهذا ما يعرف بـ Cartesian Product

وفى كتابة الاستعلام بطريقة السابقة خطأ كبير مالم يحتوى على شرط الربط
هكذا

Select e.last_name, d.departement_name
From employees e, Department d
Where e.department_id = d.department_id


فيظهر مع اسم كل موظف اسم الادارة التابع لها هذه الموظف


ما دخل Cross Join فى هذا الكلام


لاجراء الاستعلام الاول والحصول على Cartesian Product ولكن باستخدام صيغ الـ SQL القياسية والمعروفة باسم SQL:1999 Syntax

لابد من استخدام Cross Join

كما يلى

Select e.last_name, d.Department_name
From Employee CROSS JION Departments


والسؤال المطروحة

ما فائدة الـ Cross Join طالما انه لابد من استخدام شرط ربط لاظهار البيانات بصورة صحيحية

واظن ان هذا المقصود من سؤال الاخ كيوكمبر

والاجابة

انه تستخدم لعمل بعض الاختبارات التى تحاكى انتاج كمية كبيرة من البيانات
مثلا تريد اختبار تقرير او نموذج للعمل على مليون صف وليس عندك جدول يحتوى على هذا العدد من الصفوف يمكن فى هذه الحالة استخدام Cross Join لربط عدة جدول وانتاج هذه العدد من الصفوف


اى لا يستخدم الـ Cross Join فى الجملة الحقيقة والسليمة

مع تحياتى

اسامه سليمان
القاهرة

تم التعديل بواسطة Osama Soliman, 27 July 2005 - 04:02 PM.

وقل رب زدنى علماً
Osama M. Soliman
Oracle Certified Professional
Oracle Technical Consultant

 Asfour Crystal International
Cairo - Egypt
Osama.Soliman@hotmail.com
Osama.Soliman@asfourcystal.com


#5 Naji_Ali

Naji_Ali

    مشترك

  • الأعضــاء
  • 168 مشاركة

تاريخ المشاركة 27 July 2005 - 05:32 PM

السلام عليكم

أخي العزيز Osama Soliman

عندي سؤال،
هل نحتاج أن يكون هناك Foreign Key لكي يشتغل Cross Join؟
على أي أساس سيعرف الحقول المطلوبة ليقوم بعملية الربط ويستغني عن Where-Clause

وما هو المقصود ب

اى لا يستخدم الـ Cross Join فى الجملة الحقيقة والسليمة


والله يجزيك الخير على التوضيح

تم التعديل بواسطة Naji_Ali, 27 July 2005 - 06:07 PM.


#6 m_dba

m_dba

    عضو نشط

  • الأعضــاء
  • 238 مشاركة
  • الاسم الأول:Ahmad
  • اسم العائلة:Zaki
  • البـلـد: Country Flag

تاريخ المشاركة 27 July 2005 - 11:10 PM

السلام عليكم............natural joins
بارك الله فيكم cross joins الان اصبخ مفهوم بالنسبه لي ولكن natural joins .

ما طبيعة عمل natural joins وما الفائده منها هل من احد يسطتيع تفسير الجمله التاليه ومايكافئها في equijoin
select department_id,department_name,location_id,city
from departments
natural joins locations;

--------------------------------------------
select department_id,department_name,
departments.location_id,city
from departments,locations
where departments.location_id=locations.location_id;


-------------------------------
the natural join clause is baesed on all columns in the tow tables that have the same name .
يعني اسماء الحقول الي الي الها نفس الاسم او نفس القيمه ممكن حد يشرح اكثر ويبين وين الخطأ وين البديل الها ولشو عملوها اذا ما بتوفي في الشروط ......

وبارك الله فيكم جميعا
امسح ذنوبك في دقيقتين - بس دقيقتين وشوف

http://www.shbab1.com/2minutes.htm