Sunteți pe pagina 1din 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

S-ar putea să vă placă și