Mega Code Archive

 
Categories / Oracle PLSQL / Table Joins
 

LEFT OUTER JOIN vs RIGHT OUTER JOIN

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.