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

join and non equal


the past

Recommended Posts

  • بعد 2 أسابيع...

Simple Join


select col1,tab1.col2,col3 from tab1,tab2
where tab1.col2=tab2.col2
This is the most common type of join. It returns rows from two tables based on an equality condition, therefore it is also called an equi-join.



Non-Equi Join
select tab1.col1,tab2.col2 from tab1,tab2
where tab1.col1 between lowval and highval
Since this join doesn't return rows based on a equality condition, it is called a non-equi join.



Self Join
select alias1.col1,alias2.col1 "Header 2" from tabname alias1,tabname alias2
where alias1.col2=alias2.col3
In this example the table tabname is joined with itself. Using of two different alias names for the same table allows you to refer to it twice. Since the names of the resulting columns in this example are the same, the second column gets a new header.



Outer Join
select col1,col2 from tab1,tab2
where tab1.col1=tab2.col2(+)
Suppose you want to retrieve information from two tables where not all rows match but the result should contain all values from one or more columns. A simple join will select only matching rows whereas the outer join extends the result. All matching rows will be selected and when you append the outer join operator (+) to a column name, those rows which do not match will also be selected. In the example the number of rows which are selected is the number of rows in table tab2. If rows match, the outer join works as a simple join, if not, the values from tab2.col2 and a NULL value for the non existing value of tab1.col1 will be selected.

تم تعديل بواسطة moody_4u
رابط هذا التعليق
شارك

  • بعد 2 أسابيع...

بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله
لقد اجابك الأخ Moody_4u وقد وفى جزاه الله خيراُ ولكن اقتصرت اجابته على طرق الربط الخاصة بOracle ولتي كنت الوسيلة الوحيدة في الاصدارة 8i وماقبلها وهي غير متاحة في ANSI لذلك دعمت الاوراكل هذه الصيغ باضافة طريقة جديدة للربط وهي Joinوالصيغة النموذجية لها هي :
SELECT table1.column, table2.column
FROM table1
[CROSS JOIN table2] |
[NATURAL JOIN table2] |
[JOIN table2 USING (column_name)] |
[JOIN table2
ON(table1.column_name = table2.column_name)] |
[left|RIGHT|FULL OUTER JOIN table2
ON (table1.column_name = table2.column_name)];


والسؤال عن الربط المتساوي والربط الغير متساوي(بتعبيري)
فان عبارة Cross Join هي لاعطاء الجداء الديكارتي
اما Natural Join,Join ...Using,
Join...On(table1.column_nam=table2.column_name)
فهي للربط بين جدولين باستخدام القيم في الأعمدة المستخدمة باعتبار تساوي القيم أي Equal Join
اما NunEqual Joinفيمكن التصريح عنها كمايلي:
SELECT table1.column , table2.column
FROM table1
JOIN table 2
ON (Join Condetion);
حيث يمكن ان يكون شرط الربط مساواة أو اكبر او اصغر او اي شرط أخر معرف في أوراكل
ارجوا لكم من الله دوام التوفيق
وسامحوني عن اي خطأ فيما كتب وأرجو اعلامي به وشكرا

رابط هذا التعليق
شارك

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية