Difference between revisions of "Oracle:Joining tables"

From mi-linux
Jump to navigationJump to search
 
(14 intermediate revisions by the same user not shown)
Line 1: Line 1:
 +
[[Main Page]] >> [[Oracle|Oracle and SQL]] >> [[Oracle_Workbook|Workbook]] >> Joining tables
 +
 
== Joining Tables Introduction ==
 
== Joining Tables Introduction ==
  
Line 7: Line 9:
 
{| class = "wikitable"
 
{| class = "wikitable"
 
!colspan="5"|EMP
 
!colspan="5"|EMP
 +
! 
 
!colspan="3"|DEPT
 
!colspan="3"|DEPT
 
|-
 
|-
!EMPNO!!ENAME!!JOB!!.....!!DEPTNO!!DEPTNO!!DNAME!!......
+
!EMPNO!!ENAME!!JOB!!.....!!DEPTNO!!    !!DEPTNO!!DNAME!!......
 
|-
 
|-
|7499||ALLEN||SALES||.....||30||30||SALES||......
+
|7499||ALLEN||SALES||.....||30||    ||30||SALES||......
 
|-
 
|-
 
!colspan="4" | 
 
!colspan="4" | 
!colspan="2" rowspan ="2" | join using these columns
+
!colspan="3" |↑ join attributes ↑
 
!colspan="2" | 
 
!colspan="2" | 
|-
 
!colspan="8" | 
 
 
|}
 
|}
  
== JOIN ATTRIBUTES ==
+
The table must have matching values in the ''join attributes'' to enable a join to take place. If there are no matching values, the tables will not join! For example, if 30 was missing from the DEPT table, then the employees from department 30 would not appear in any output that joins tables DEPT and EMP together. (A consequence of violating referential integrity!)
 
 
The table must have matching values in the Join attributes to enable a join to take place. If there are no matching values, the tables will not join! For example, if 30 was missing from the DEPT table, then the employees from department 30 would not appear in any output that joins tables DEPT and EMP together. (A consequence of violating referential integrity!)
 
 
 
=== Basic SQL Structure For Joining Tables ===
 
 
 
The format when joining tables is:
 
 
 
<code>
 
SELECT some columns
 
FROM two or more tables
 
WHERE table1.col1 = table2.col2 [ AND table3.col3 = table4.col4 [AND ....]]
 
</code>
 
  
Note, two, or more tables can be joined in a SQL statement, but each join condition specifies the link between two tables only. If, for example, three tables appear in the FROM clause, there should normally be two join conditions.
+
There are different ways to join tables:
  
=== Join Operators ===
+
* [[Oracle:Basic_Join|Basic Join conditions]]
= Equal
+
* [[Oracle:Recursive_Join|Recursive joins]]
<> Not equal
+
* [[Oracle:Outer_Join|Outer joins]]
> Greater than
 
>= Greater than, or equal to
 
< Less than
 
<= Less than, or equal to
 
BETWEEN  lower-value AND  higher-value A value between lower and higher
 
LIKE Pattern matching
 
  
=== Example Join Queries ===
 
  
To find ALLEN's location:
+
----
  
SELECT  ENAME,  LOC 
+
Return to the [[Oracle_Workbook|Workbook]].
FROM  EMP  E,  DEPT  D
 
WHERE  ENAME  =  'ALLEN' AND E.DEPTNO = D.DEPTNO;
 

Latest revision as of 13:54, 4 March 2016

Main Page >> Oracle and SQL >> Workbook >> Joining tables

Joining Tables Introduction

Sometimes information needs to be retrieved from more than one table. The relationships between rows in one table and rows in another are established by the values in certain corresponding columns (foreign key).

For example:

EMP   DEPT
EMPNO ENAME JOB ..... DEPTNO      DEPTNO DNAME ......
7499 ALLEN SALES ..... 30      30 SALES ......
  ↑ join attributes ↑  

The table must have matching values in the join attributes to enable a join to take place. If there are no matching values, the tables will not join! For example, if 30 was missing from the DEPT table, then the employees from department 30 would not appear in any output that joins tables DEPT and EMP together. (A consequence of violating referential integrity!)

There are different ways to join tables:



Return to the Workbook.