Executing the query, you will see that actually it is the first one. Since these two interpretations give such different results, it is clear that only one can be true. Therefore, this second interpretation would mean that all T1 rows should be present in the result. When this result set is then outer-joined to T1, T1 being on the outer side, you will get a final result containing all the rows from T1 and those from the T2- T3 inner join that match the outer join condition: T2.BARNCH_CODE T2.CUSTOMER_NUM T3.CUSTOMER_NUM Now if the inner join is executed first, then it will produce a result set containing the rows from T2 and T3 that match the inner join's condition: This way some of T1 rows will be excluded from the final result set. T1.BRANCH_CODE T2.BARNCH_CODE T2.CUSTOMER_NUM T3.CUSTOMER_NUM Joining that result further with T3 using an inner join on a condition that uses a T2 column will eliminate the non-matches – and, therefore, corresponding T1 rows, – because a null cannot satisfy the join's equals condition: T1.BRANCH_CODE T2.BARNCH_CODE T2.CUSTOMER_NUM ![]() ![]() If the left join evaluates first, then its result will have nulls in the T2 columns where T1 rows had no match: There are two joins here and two possibilities in which order they are executed. More specifically, let us assume these are the three tables: T1 T2 T3īRANCH_CODE BRANCH_CODE CUSTOMER_NUM CUSTOMER_NUM Let us assume that some rows in T1 have no matches in T2. One way to determine the logical order of joins is to replace the first inner join in your example with a left outer join: SELECT *
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |