You are on page 1of 29

JOINS

1.A JOIN IS A QUERY THAT COMBINES ROWS FROM


TWO OR MORE TABLES, VIEW OR MATERIALIZED
VIEWS.
2.ORACLE DATABASE PERFORMS A JOIN WHENEVER
MULTIPLE TABLES APPEAR IN THE FROM CLAUSE OF
THE QUERY.
3.THE SELECT LIST OF THE QUERY CAN SELECT ANY
COLUMNS FROM ANY OF THESE TABLES.
4.IF ANY TWO OF THESE TABLES HAVE A COLUMN
NAME IN COMMON, THEN YOU MUST QUALIFY ALL
REFERENCES TO THESE COLUMNS THROUGHOUT THE
QUERY WITH TABLE NAMES TO AVOID AMBIGUITY.
5.JOINS=N-1 CONDITION
WHERE N=NUMBER OF TABLES.
TYPES OF JOINS:
1.INNER JOIN
A. EQUI JOIN.
B.NON EQUI JOIN.
2.OUTER JOIN
A. LEFT OUTER JOIN
B. RIGHT OUTER JOIN
C.FULL OUTER JOIN
3.CROSS JOIN
4.SELF JOIN
5.NATURAL JOIN
WHY JOIN CONDITION:
 
1.MOST JOIN QUERIES CONTAIN AT LEAST ONE
JOIN CONDITION, EITHER IN THE FROM CLAUSE
OR IN THE WHERE CLAUSE.

2.THE JOIN CONDITION COMPARES TWO


COLUMNS, EACH FROM A DIFFERENT TABLE.

3. TO EXECUTE A JOIN, ORACLE DATABASE


COMBINES PAIRS OF ROWS, EACH CONTAINING
ONE ROW FROM EACH TABLE, FOR WHICH THE
JOIN CONDITION EVALUATES TO TRUE.

4.THE COLUMNS IN THE JOIN CONDITIONS


NEED NOT ALSO APPEAR IN THE SELECT LIST.

INNER JOIN
The INNER JOIN KEYWORD SELECTS RECORDS THAT
HAVE MATCHING VALUES IN BOTH TABLES.
INNER JOIN SYNTAX
SELECT COLUMN(S)
FROM TABLE1 INNER JOIN TABLE2
TABLE1 COLUMN_NAME=TABLE2 COLUMN_NAME;

TYPES OF
INNER JOIN
1.EQUI JOIN
2.NON EQUI JOIN

EQUI JOIN:
1.EQUI JOIN IS A JOIN FOR EQUALITY OR MATCHING
COLUMN(S) VALUES OF THE RELATIVE TABLES.
2.WE CAN USE EQUI JOIN IN BOTH ANSI AND NON
ANSI CONDITION.
SYNTAX FOR EQUI
CONDITION ANSI
METHOD:
SELECT COLUMN(S)
FROM TABLE1 INNER JOIN TABLE2
ON TABLE1 COLUMN_NAME=TABLE 2 COLUMN NAME
EQUAL JOIN
USING ANSI METHOD
SELECT
STUDENTS.ROLL_NO, STUDENTS_COURSE.ROLL_NO,
STUDENTS_COURSE.COURSE_ID,
STUDENTS.STUDENT_NAME
FROM STUDENTS INNER JOIN STUDENTS_COURSE
ON
STUDENTS.ROLL_NO=STUDENTS_COURSE.ROLL_NO;
---------------------USING NON ANSI
METHOD--------------------------------------

SYNTAX FOR NON ANSI


EQUI JOIN
SELECT COLUMN(S)
FROM TABLE1 INNER JOIN TABLE2
WHERE TABLE1 COLUMN_NAME=TABLE 2 COLUMN
NAME

SELECT STUDENTS.ROLL_NO,
STUDENTS_COURSE.ROLL_NO,
STUDENTS_COURSE.COURSE_ID,
STUDENTS.STUDENT_NAME
FROM STUDENTS , STUDENTS_COURSE
WHERE
STUDENTS.ROLL_NO=STUDENTS_COURSE.ROLL_NO;
NON EQUI METHOD
NON EQUI JOIN PERFORMS A JOIN USING
COMPARISON OPERATOR OTHER THAN
EQUAL(=),>,<,>=,<=

SYNTAX FOR NON EQUI


JOIN
SELECT COLUMN(S)
FROM TABLE1 INNER JOIN TABLE2
ON TABLE1 COLUMN_NAME! =TABLE 2 COLUMN
NAME
------------------NON
EQUAL
JOIN-------------------------------
-------------
-------------------USING ANSI
METHOD-----------------------------------------
SELECT
STUDENTS.ROLL_NO,STUDENTS_COURSE.ROLL_NO,ST
UDENTS_COURSE.COURSE_ID,
STUDENTS.STUDENT_NAME
FROM STUDENTS INNER JOIN STUDENTS_COURSE
ON STUDENTS.ROLL_NO!
=STUDENTS_COURSE.ROLL_NO;
---------------------------USING NON ANSI
METHOD---------------------------------
SELECT
STUDENTS.ROLL_NO,STUDENTS_COURSE.ROLL_NO,ST
UDENTS_COURSE.COURSE_ID,
STUDENTS.STUDENT_NAME
FROM STUDENTS , STUDENTS_COURSE
WHERE STUDENTS.ROLL_NO!
=STUDENTS_COURSE.ROLL_NO;
OUTER JOINS
OUTER JOINS ARE JOINS THAT RETURNED MATCHED
AND UNMATCHED VALUES FROM EITHER OR BOTH
TABLES.

TYPES OF OUTER JOINS


1.LEFT OUTER JOINS
IT RETURNS ALL THE VALUES IN THE LEFT TABLE
AND MATCHED VALUES IN THE RIGHT TABLE.

SYNTAX FOR LEFT


OUTER JOIN
ANSI METHOD EQUI
JOIN
SELECT COLUMN(S)
FROM TABLE1 INNER JOIN TABLE2
ON TABLE1 COLUMN_NAME=TABLE 2 COLUMN NAME
SELECT STUDENTS.ROLL_NO,
STUDENTS_COURSE.ROLL_NO,
STUDENTS_COURSE.COURSE_ID,
STUDENTS.STUDENT_NAME
FROM STUDENTS LEFT OUTER JOIN
STUDENTS_COURSE
ON
STUDENTS.ROLL_NO=STUDENTS_COURSE.ROLL_NO
(+);

OUTER JOIN USING ANSI


NOT EQUI JOIN:
SELECT COLUMN(S)
FROM TABLE1 INNER JOIN TABLE2
ON TABLE1 COLUMN_NAME! =TABLE 2 COLUMN
NAME
SELECT STUDENTS.ROLL_NO,
STUDENTS_COURSE.ROLL_NO,
STUDENTS_COURSE.COURSE_ID,
STUDENTS.STUDENT_NAME
FROM STUDENTS LEFT OUTER JOIN
STUDENTS_COURSE
ON STUDENTS.ROLL_NO!
=STUDENTS_COURSE.ROLL_NO (+);

OUTER JOIN USING NON


ANSI EQUI JOIN
SELECT COLUMN(S)
FROM TABLE1 INNER JOIN TABLE2
WHERE TABLE1 COLUMN_NAME! =TABLE 2 COLUMN
NAME
SELECT STUDENTS.ROLL_NO,
STUDENTS_COURSE.ROLL_NO,
STUDENTS_COURSE.COURSE_ID,
STUDENTS.STUDENT_NAME
FROM STUDENTS LEFT OUTER JOIN
STUDENTS_COURSE
WHERE STUDENTS.ROLL_NO!
=STUDENTS_COURSE.ROLL_NO (+);

OUTER JOIN USING NON


ANSI NON EQUI JOIN
SELECT COLUMN(S)
FROM TABLE1 INNER JOIN TABLE2
WHERE TABLE1 COLUMN_NAME! =TABLE 2 COLUMN
NAME
SELECT STUDENTS.ROLL_NO,
STUDENTS_COURSE.ROLL_NO,
STUDENTS_COURSE.COURSE_ID,
STUDENTS.STUDENT_NAME
FROM STUDENTS LEFT OUTER JOIN
STUDENTS_COURSE
WHERE STUDENTS.ROLL_NO!
=STUDENTS_COURSE.ROLL_NO (+);
RIGHT OUTER JOIN

RIGHT JOIN RETURNS ALL THE VALUES FROM RIGHT


TABLE AND MATCHED VALUES IN LEFT TABLE.

SYNTAX FOR RIGHT


OUTER JOIN
ANSI METHOD EQUI
JOIN
SELECT COLUMN(S)
FROM TABLE1 INNER JOIN TABLE2
ON TABLE1 COLUMN_NAME (+) =TABLE 2 COLUMN
NAME
SELECT STUDENTS.ROLL_NO,
STUDENTS_COURSE.ROLL_NO,
STUDENTS_COURSE.COURSE_ID,
STUDENTS.STUDENT_NAME
FROM STUDENTS RIGHT OUTER JOIN
STUDENTS_COURSE
ON STUDENTS.ROLL_NO (+)
=STUDENTS_COURSE.ROLL_NO;

ANSI METHOD NON EQUI


JOIN
SELECT COLUMN(S)
FROM TABLE1 INNER JOIN TABLE2
ON TABLE1 COLUMN_NAME (+) !=TABLE 2 COLUMN
NAME
SELECT STUDENTS.ROLL_NO,
STUDENTS_COURSE.ROLL_NO,
STUDENTS_COURSE.COURSE_ID,
STUDENTS.STUDENT_NAME
FROM STUDENTS LEFT OUTER JOIN
STUDENTS_COURSE
ON STUDENTS.ROLL_NO (+)!
=STUDENTS_COURSE.ROLL_NO;
NON ANSI METHOD EQUI
JOIN
SELECT COLUMN(S)
FROM TABLE1 INNER JOIN TABLE2
WHERE TABLE1 COLUMN_NAME (+) =TABLE 2
COLUMN NAME

SELECT STUDENTS.ROLL_NO,
STUDENTS_COURSE.ROLL_NO,
STUDENTS_COURSE.COURSE_ID,
STUDENTS.STUDENT_NAME
FROM STUDENTS LEFT OUTER JOIN
STUDENTS_COURSE
ON STUDENTS.ROLL_NO (+)
=STUDENTS_COURSE.ROLL_NO;
NON ANSI METHOD NON
EQUI JOIN
SELECT COLUMN(S)
FROM TABLE1 INNER JOIN TABLE2
WHERE TABLE1 COLUMN_NAME (+) !=TABLE 2
COLUMN NAME

SELECT STUDENTS.ROLL_NO,
STUDENTS_COURSE.ROLL_NO,
STUDENTS_COURSE.COURSE_ID,
STUDENTS.STUDENT_NAME
FROM STUDENTS LEFT OUTER JOIN
STUDENTS_COURSE
WHERE STUDENTS.ROLL_NO (+)!
=STUDENTS_COURSE.ROLL_NO;
FULL OUTER JOIN
RETURNS UNMATCHED ROWS FROM BOTH TABLES,
AS WELL AS MATCHED TABLES IN BOTH TABLES
SYNTAX FOR FULL
OUTER JOIN
ANSI METHOD EQUI
JOIN
SELECT COLUMN(S)
FROM TABLE1 FULL OUTER JOIN TABLE2
ON TABLE1 COLUMN_NAME =TABLE 2 COLUMN
NAME

SELECT STUDENTS.ROLL_NO,
STUDENTS_COURSE.ROLL_NO,
STUDENTS_COURSE.COURSE_ID,
STUDENTS.STUDENT_NAME
FROM STUDENTS FULL OUTER JOIN
STUDENTS_COURSE
ON STUDENTS.ROLL_NO
=STUDENTS_COURSE.ROLL_NO;
ANSI METHOD NON EQUI
JOIN
SELECT COLUMN(S)
FROM TABLE1 FULL OUTER JOIN TABLE2
ON TABLE1 COLUMN_NAME (+) =TABLE 2 COLUMN
NAME

SELECT STUDENTS.ROLL_NO,
STUDENTS_COURSE.ROLL_NO,
STUDENTS_COURSE.COURSE_ID,
STUDENTS.STUDENT_NAME
FROM STUDENTS FULL OUTER JOIN
STUDENTS_COURSE
ON STUDENTS.ROLL_NO!
=STUDENTS_COURSE.ROLL_NO;
NON ANSI METHOD EQUI
JOIN
SELECT COLUMN(S)
FROM TABLE1 LEFT OUTER JOIN TABLE2
ON TABLE1 COLUMN_NAME =TABLE 2 COLUMN
NAME (+)
UNION
SELECT COLUMN(S)
FROM TABLE1 RIGHT OUTER JOIN TABLE2
ON TABLE1 COLUMN_NAME (+) =TABLE 2 COLUMN
NAME
SELECT STUDENTS.ROLL_NO,
STUDENTS_COURSE.ROLL_NO,
STUDENTS_COURSE.COURSE_ID,
STUDENTS.STUDENT_NAME
FROM STUDENTS LEFT OUTER JOIN
STUDENTS_COURSE
ON STUDENTS.ROLL_NO
=STUDENTS_COURSE.ROLL_NO (+);
UNION
SELECT STUDENTS.ROLL_NO,
STUDENTS_COURSE.ROLL_NO,
STUDENTS_COURSE.COURSE_ID,
STUDENTS.STUDENT_NAME
FROM STUDENTS RIGHT OUTER JOIN
STUDENTS_COURSE
ON STUDENTS.ROLL_NO
=(+)STUDENTS_COURSE.ROLL_NO;
CROSS JOIN
1.CROSS JOIN IS USED TO COMBINE EACH ROW OF
FIRST TABLE WITH EACH ROW OF SECOND TABLE.
2.IT IS ALSO KNOWN AS CARTESIAN PRODUCT

SYNTAX FOR CROSS JOIN


SELECT COLUMN(S)
FROM TABLE1 CROSS JOIN TABLE2;

SELECT STUDENTS.ROLL_NO,
STUDENTS_COURSE.ROLL_NO,
STUDENTS_COURSE.COURSE_ID,
STUDENTS.STUDENT_NAME
FROM STUDENTS CROSS JOIN STUDENTS_COURSE;
SELF JOIN
A SELF JOIN IS A REGULAR JOIN WHERE TABLE
JOINED BY ITSELF

SYNTAX FOR SELF JOIN


SELECT COLUMN(S)
FROM TABLE1 SELF TABLE2;
SELECT STUDENTS.ROLL_NO,
STUDENTS_COURSE.ROLL_NO,
STUDENTS_COURSE.COURSE_ID,
STUDENTS.STUDENT_NAME
FROM STUDENTS JOIN STUDENTS_COURSE
ON
STUDENTS.ROLL_NO=STUDENTS_COURSE.ROLL_NO;

NATURAL JOIN
1.NATURAL JOIN IS LIKE A EQUI JOIN FOR EQUALITY
OR MATCHING COLUMN(S) VALUES OF THE RELATIVE
TABLES.
SELECT COLUMN(S)
FROM TABLE1 JOIN TABLE2
WHERE TABLE1 COLUMN_NAME=TABLE 2 COLUMN
NAME

SELECT STUDENTS.ROLL_NO,
STUDENTS_COURSE.ROLL_NO,
STUDENTS_COURSE.COURSE_ID,
STUDENTS.STUDENT_NAME
FROM STUDENTS, STUDENTS_COURSE
WHERE
STUDENTS.ROLL_NO=STUDENTS_COURSE.ROLL_NO;

You might also like