0% found this document useful (0 votes)
52 views11 pages

Joins: Document Prepared by

The document discusses different types of joins in SQL for selecting data from multiple tables. It describes equi joins for matching rows between tables, as well as outer joins including right, left, and full outer joins. Self joins and cross joins are also summarized. Examples are provided to illustrate equi joins, outer joins, and self joins between tables.

Uploaded by

Senthil Raj
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
52 views11 pages

Joins: Document Prepared by

The document discusses different types of joins in SQL for selecting data from multiple tables. It describes equi joins for matching rows between tables, as well as outer joins including right, left, and full outer joins. Self joins and cross joins are also summarized. Examples are provided to illustrate equi joins, outer joins, and self joins between tables.

Uploaded by

Senthil Raj
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 11

JOINS

SELECTING DATA FROM TWO OR MORE TABLES

Document prepared by: AN.Murugappan

JOINS - SELECTING DATA FROM MORE THEN ONE TABLE


IN NORMAL QUERY SELECT AND FROM CLAUSE IS MANDATORY BUT IN JOIN WHERE CLAUSE IS ALSO MANDATORY

TYPES:
1. 2. EQUI JOIN OUTER JOIN - RIGHT OUTER JOIN - LEFT OUTER JOIN - FULL OUTER JOIN SELF JOIN OR INNER JOIN CROSS JOIN

3. 4.

EQUI JOIN: SELECTING ONLY MATCHING ROWS. SELECT EMPLOYEES.FIRST_NAME, EMPLOYEES.SALARY, EMPLOYEES.DEPARTMENT_ID, DEPARTMENTS.DEPARTMENT_NAME FROM EMPLOYEES, DEPARTMENTS WHERE EMPLOYEES.DEPARTMENT_ID = DEPARTMENTS.DEPARTMENT_ID; IN ORDER TO REDUCE THE COMPLEXITY WE CAN USE ALIAS IN THIS QUERY SELECT E.FIRST_NAME, E.SALARY, E.DEPARTMENT_ID, D.DEPARTMENT_NAME FROM EMPLOYEES E, DEPARTMENTS D

WHERE E.DEPARTMENT_ID = D.DEPARTMENT_ID

CREATE TABLE COURSE ( CID NUMBER (3), CNAME VARCHAR2 (20) );

INSERT INTO COURSE VALUES (10,'ORACLE'); INSERT INTO COURSE VALUES (20,'DOTNET'); INSERT INTO COURSE VALUES (30,'JAVA'); INSERT INTO COURSE VALUES (40,'UNIX'); INSERT INTO COURSE VALUES (50,'TESTING');

SELECT * FROM COURSE;

CREATE TABLE STUDENTS

( SNAME VARCHAR2 (20), CID NUMBER (3) );

INSERT INTO STUDENTS VALUES ('SENTHIL', 20); INSERT INTO STUDENTS VALUES ('MURUGAPPAN', 10); INSERT INTO STUDENTS VALUES ('RAMESH', 30); INSERT INTO STUDENTS VALUES ('KARTHI', 40); INSERT INTO STUDENTS VALUES ('RAVI', 60);

SELECT * FROM STUDENTS;

EQUI JOIN: SELECT S.SNAME, C.CID, C.CNAME FROM STUDENTS S, COURSE C WHERE S.CID = C.CID;

OUTER JOIN TYPES: RIGHT OUTER JOIN LEFT OUTER JOIN FULL OUTER JOIN

RIGHT OUTER JOIN: IT SHOWS THE UNMATCHED COLUMNS IN RIGHT SIDE TABLE) [BY INCLUDE (+) IN LEFT SIDE]

SELECT S.SNAME, C.CID, C.CNAME FROM STUDENTS S, COURSE C WHERE S.CID (+) = C.CID;

LEFT OUTER JOIN: IT SHOWS THE UNMATCHED COLUMNS IN LEFT SIDE TABLE [BY INCLUDE (+) IN RIGHT SIDE]

SELECT S.SNAME, C.CID, C.CNAME FROM STUDENTS S, COURSE C WHERE S.CID = C.CID (+);

FULL OUTER JOIN: DISCUS LATER

SELF JOIN: SELECT E1.FIRST_NAME, E1.MANAGER_ID, E2.FIRST_NAME AS "MANAGER NAME" FROM EMPLOYEES E1, EMPLOYEES E2 WHERE E1.MANAGER_ID = E2.EMPLOYEE_ID;

WE CAN WRITTEN THIS SAME CONCEPTS USING THE FOLLOWING SYNTAX ALSO INSTEAD OF WHERE CLAUSE WE CAN USE ON NO NEED TO PUT + SIGN ADD KEY WORD - JOIN - RIGHT OUTER JOIN - LEFT OUTER JOIN - FULL OUTER JOIN - INNER JOIN (SELF JOIN)

JOIN SELECT S.SNAME, C.CID, C.CNAME FROM STUDENTS S JOIN COURSE C ON S.CID = C.CID;

RIGHT OUTER JOIN: SELECT S.SNAME, C.CID, C.CNAME FROM STUDENTS S RIGHT OUTER JOIN COURSE C ON S.CID = C.CID;

LEFT OUTER JOIN: SELECT S.SNAME, C.CID, C.CNAME FROM STUDENTS S LEFT OUTER JOIN COURSE C ON S.CID = C.CID;

SELF JOIN (OR) FULL OUTER JOIN: SELECT S.SNAME, C.CID, C.CNAME FROM STUDENTS S FULL OUTER JOIN COURSE C ON S.CID = C.CID;

SELF JOIN (OR) INNER JOIN: SELECT * FROM EMPLOYEES;

SELECT E1.FIRST_NAME, E1.MANAGER_ID, E2.FIRST_NAME AS "MANAGER NAME"

FROM EMPLOYEES E1 INNER JOIN EMPLOYEES E2 ON E1.MANAGER_ID = E2.EMPLOYEE_ID; CROSS JOIN: CROSS JOIN IS A CARTESIAN PRODUCT NO OF ROWS IN THE FIRST TABLE JOIN WITH NO OF ROWS IN THE SECOND TABLE CARTESIAN PRODUCT IS FORM WHEN YOU IGNORE THE WHERE CLAUSE OR VALID JOIN CONDITION CROSS JOIN IS A WRONG JOIN TO AVOID THE CROSS JOIN WE USE THE WHERE CLAUSE OR VALID JOIN CONDITION

SELECT S.SNAME, C.CID, C.CNAME FROM STUDENTS S CROSS JOIN COURSE C;

JOINS FROM THREE TABLES (2 JOIN CONDITION)

SELECT E.FIRST_NAME, E.DEPARTMENT_ID, D.DEPARTMENT_NAME, D.LOCATION_ID,L.CITY FROM EMPLOYEES E, DEPARTMENTS D, LOCATIONS L WHERE E.DEPARTMENT_ID = D.DEPARTMENT_ID AND D.LOCATION_ID = L.LOCATION_ID;

IF WE USE 50 TABLES IN THE JOINS MEANS WE HAVE TO WRITE 49 JOIN CONDITION IF WE USE N TABLES WE HAVE TO WRITE N-1 JOIN CONDITION

You might also like