LEFT OUTER JOIN vs RIGHT OUTER JOIN : Outer Joins Left Right « Table Joins « Oracle PL/SQL Tutorial






SQL>
SQL> CREATE TABLE project (
  2    pro_id              NUMBER(4),
  3    pro_name            VARCHAR2(40),
  4    budget          NUMBER(9,2),
  5    CONSTRAINT project_pk   PRIMARY KEY (pro_id)
  6  );

Table created.

SQL>
SQL>
SQL> INSERT INTO project(pro_id, pro_name, budget)VALUES (1001, 'A',12345);

1 row created.

SQL> INSERT INTO project(pro_id, pro_name, budget)VALUES (1002, 'ERP',23456);

1 row created.

SQL> INSERT INTO project(pro_id, pro_name, budget)VALUES (1003, 'SQL',34567);

1 row created.

SQL> INSERT INTO project(pro_id, pro_name, budget)VALUES (1004, 'CRM',45678);

1 row created.

SQL> INSERT INTO project(pro_id, pro_name, budget)VALUES (1005, 'VPN',56789);

1 row created.

SQL>
SQL>
SQL>
SQL> CREATE TABLE server_usage (
  2    pro_id                   NUMBER(4),
  3    emp_id                  NUMBER,
  4    time_log_date                DATE,
  5    hours_logged                 NUMBER(8,2),
  6    dollars_charged              NUMBER(8,2),
  7    CONSTRAINT server_usage_pk  PRIMARY KEY (pro_id, emp_id, time_log_date)
  8  );

Table created.

SQL> INSERT INTO server_usage(pro_id, emp_id, time_log_date, hours_logged, dollars_charged)
  2                    VALUES (1001,101,to_date('4-Apr-2004','dd-mon-yyyy'),1123,222);

1 row created.

SQL> INSERT INTO server_usage(pro_id, emp_id, time_log_date, hours_logged, dollars_charged)
  2                    VALUES (1002,102,to_date('4-Apr-2005','dd-mon-yyyy'),1124,223);

1 row created.

SQL> INSERT INTO server_usage(pro_id, emp_id, time_log_date, hours_logged, dollars_charged)
  2                    VALUES (1003,103,to_date('4-Apr-2006','dd-mon-yyyy'),1125,224);

1 row created.

SQL> INSERT INTO server_usage(pro_id, emp_id, time_log_date, hours_logged, dollars_charged)
  2                    VALUES (1004,104,to_date('4-Apr-2007','dd-mon-yyyy'),1126,225);

1 row created.

SQL> INSERT INTO server_usage(pro_id, emp_id, time_log_date, hours_logged, dollars_charged)
  2                    VALUES (1005,105,to_date('4-Apr-2008','dd-mon-yyyy'),1127,226);

1 row created.

SQL> INSERT INTO server_usage(pro_id, emp_id, time_log_date, hours_logged, dollars_charged)
  2                    VALUES (1001,106,to_date('4-Apr-2009','dd-mon-yyyy'),1128,227);

1 row created.

SQL> INSERT INTO server_usage(pro_id, emp_id, time_log_date, hours_logged, dollars_charged)
  2                    VALUES (1002,107,to_date('4-Apr-2010','dd-mon-yyyy'),1129,228);

1 row created.

SQL>
SQL>
SQL> SET ECHO ON
SQL> SELECT p.pro_name,  ph.time_log_date, ph.hours_logged
  2  FROM project p LEFT OUTER JOIN server_usage ph
  3       ON p.pro_id = ph.pro_id;
A
04-APR-04         1123

ERP
04-APR-05         1124

SQL
04-APR-06         1125

CRM
04-APR-07         1126

VPN
04-APR-08         1127

A
04-APR-09         1128

ERP
04-APR-10         1129


7 rows selected.

SQL>
SQL> SELECT p.pro_name,  ph.time_log_date, ph.hours_logged
  2  FROM server_usage ph RIGHT OUTER JOIN project p
  3       ON p.pro_id = ph.pro_id;
A
04-APR-04         1123

ERP
04-APR-05         1124

SQL
04-APR-06         1125

CRM
04-APR-07         1126

VPN
04-APR-08         1127

A
04-APR-09         1128

ERP
04-APR-10         1129


7 rows selected.

SQL>
SQL> drop table server_usage;

Table dropped.

SQL> drop table project;

Table dropped.








7.4.Outer Joins Left Right
7.4.1.Understanding Outer Joins
7.4.2.Left and Right Outer Joins
7.4.3.An Example of a Left Outer Join 1
7.4.4.An Example of a Left Outer Join 2
7.4.5.An Example of a Right Outer Join 1
7.4.6.An Example of a Right Outer Join 2
7.4.7.Perform outer joins in combination with self joins, employee and job tables
7.4.8.Example outer join with (+)
7.4.9.Right outer join with using statement
7.4.10.Right outer join with group by
7.4.11.LEFT OUTER JOIN tableName ON joined columns
7.4.12.LEFT OUTER JOIN vs RIGHT OUTER JOIN
7.4.13.Left Outer Join
7.4.14.Right Outer Join
7.4.15.Right Outer Join(room vs class)
7.4.16.Right join with where in clause