For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!
Interested in getting your voice heard by members of the Developer Marketing team at Oracle? Check out this post for AppDev or this post for AI focus group information.
SQL> select * from t1; ID ---------- 1 2 3 4 SQL> select * from t2; ID ---------- 3 4 5 6 -- LEFT OUTER JOIN SQL> select t1.id, t2.id 2 from t1 LEFT OUTER JOIN t2 ON (t1.id = t2.id); ID ID ---------- ---------- 3 3 4 4 1 2 -- RIGHT OUTER JOIN SQL> select t1.id, t2.id 2 from t1 RIGHT OUTER JOIN t2 ON (t1.id = t2.id); ID ID ---------- ---------- 3 3 4 4 6 5 -- LEFT JOIN (SAME AS LEFT OUTER JOIN) SQL> ed Wrote file afiedt.buf 1 select t1.id, t2.id 2* from t1 LEFT JOIN t2 ON (t1.id = t2.id) SQL> / ID ID ---------- ---------- 3 3 4 4 1 2 -- RIGHT JOIN (SAME AS RIGHT OUTER JOIN) SQL> ed Wrote file afiedt.buf 1 select t1.id, t2.id 2* from t1 RIGHT JOIN t2 ON (t1.id = t2.id) SQL> / ID ID ---------- ---------- 3 3 4 4 6 5 -- INNER JOIN (REGULAR JOIN) SQL> ed Wrote file afiedt.buf 1 select t1.id, t2.id 2* from t1 INNER JOIN t2 ON (t1.id = t2.id) SQL> / ID ID ---------- ---------- 3 3 4 4 -- FULL OUTER JOIN SQL> ed Wrote file afiedt.buf 1 select t1.id, t2.id 2* from t1 FULL OUTER JOIN t2 ON (t1.id = t2.id) SQL> / ID ID ---------- ---------- 3 3 4 4 1 2 6 5 6 rows selected. SQL>
SQL> with t1 as (select column_value id from table(sys.odcinumberlist(1,2,3,4))), t2 as (select column_value id from table(sys.odcinumberlist(3,4,5,6))) select * from t1 cross join t2 ID ID ---------- ---------- 1 3 1 4 1 5 1 6 2 3 2 4 2 5 2 6 3 3 3 4 3 5 3 6 4 3 4 4 4 5 4 6
select * from t1 full natural join t2 ID ---------- 3 4
with t1 as (select rownum id, column_value x from table(sys.odcinumberlist(100,200))), t2 as (select column_value y from table(sys.odcinumberlist(300,400))), t3 as (select column_value id from table(sys.odcinumberlist(2,3))) select * from t1 cross join t2 full join t3 on (t1.id=t3.id) ID X Y ID ---------- ---------- ---------- ---------- 1 100 300 1 100 400 2 200 300 2 2 200 400 2 3
SQL> select t1.id, t2.id 2 from t1 OUTER JOIN t2 ON (t1.id = t2.id); from t1 OUTER JOIN t2 ON (t1.id = t2.id) * ERROR at line 2: ORA-00904: "T1"."ID": invalid identifier SQL> select t1.id, t2.id 2 from t1 LEFT OUTER JOIN t2 ON (t1.id = t2.id); ID ID ---------- ---------- 3 3 4 4 1 2 SQL> select t1.id, t2.id 2 from t1 LEFT JOIN t2 ON (t1.id = t2.id); ID ID ---------- ---------- 3 3 4 4 1 2 SQL>
Agree about the natural joins, definitely bad practice, even on the best designed databases.
Probably you're ignoring cases like this where natural join is very helpful.
select owner,table_name,column_name,r_owner,r_table_name,r_column_name from ( select owner,constraint_name,r_owner,r_constraint_name from dba_constraints where constraint_type = 'R' ) natural join ( select owner,constraint_name,table_name,column_name, position from dba_cons_columns ) natural join ( select owner as r_owner,constraint_name as r_constraint_name, table_name as r_table_name,column_name as r_column_name ,position from dba_cons_columns )
Bye Alessandro