Note that there are some explanatory texts on larger screens.

plurals
  1. POSQL Natural Join and nested SELECT query
    primarykey
    data
    text
    <p>What might make these two queries different?</p> <p>The post is indeed mostly code.</p> <pre><code>SELECT DISTINCT S.name FROM student S NATURAL JOIN taking NATURAL JOIN (select * from class where classnum ='121') WHERE department='CMPSC' AND semester='Spring 2013'; SELECT DISTINCT S.name FROM student S NATURAL JOIN taking NATURAL JOIN class WHERE department='CMPSC' AND semester='Spring 2013' AND classnum='121'; </code></pre> <p>Thank you!</p> <p>EDIT:</p> <p>As a response to the request for explain command: I had to do it on ORACLE so I'm not sure if this is the result expected:</p> <p>This is the first query:</p> <pre><code>Plan hash value: 3259400360 ------------------------------------------------------ | Id | Operation | Name | ------------------------------------------------------ | 0 | SELECT STATEMENT | | | 1 | HASH UNIQUE | | | 2 | NESTED LOOPS | | | 3 | NESTED LOOPS | | | 4 | TABLE ACCESS FULL | CLASS | | 5 | INDEX FULL SCAN | SYS_C0099014 | | 6 | TABLE ACCESS BY INDEX ROWID| STUDENT | | 7 | INDEX UNIQUE SCAN | SYS_C0098998 | ------------------------------------------------------ Predicate Information (identified by operation id): --------------------------------------------------- 4 - filter("CLASSNUM"=121 AND "CLASS"."SEMESTER"='Spring 2013' AND "CLASS"."DEPARTMENT"='CMPSC') PLAN_TABLE_OUTPUT -------------------------------------------------------------------------------- 5 - access("TAKING"."SCHEDULENUM"="CLASS"."SCHEDULENUM" AND "TAKING"."SEMESTER"='Spring 2013') filter("TAKING"."SEMESTER"='Spring 2013' AND "TAKING"."SCHEDULENUM"="CLASS"."SCHEDULENUM") 7 - access("S"."STUDENTNUM"="TAKING"."STUDENTNUM") </code></pre> <p>Second QUERY:</p> <pre><code>PLAN_TABLE_OUTPUT -------------------------------------------------------------------------------- Plan hash value: 226170808 ------------------------------------------------------- | Id | Operation | Name | ------------------------------------------------------- | 0 | SELECT STATEMENT | | | 1 | HASH UNIQUE | | | 2 | HASH JOIN | | | 3 | MERGE JOIN | | | 4 | TABLE ACCESS BY INDEX ROWID| STUDENT | | 5 | INDEX FULL SCAN | SYS_C0098998 | | 6 | SORT JOIN | | | 7 | INDEX FULL SCAN | SYS_C0099014 | | 8 | TABLE ACCESS FULL | CLASS | ------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- PLAN_TABLE_OUTPUT -------------------------------------------------------------------------------- 2 - access("TAKING"."SEMESTER"="CLASS"."SEMESTER") 6 - access("S"."STUDENTNUM"="TAKING"."STUDENTNUM") filter("S"."STUDENTNUM"="TAKING"."STUDENTNUM") 7 - access("TAKING"."SEMESTER"='Spring 2013') filter("TAKING"."SEMESTER"='Spring 2013') 8 - filter("CLASS"."CLASSNUM"=121 AND "CLASS"."SEMESTER"='Spring 2013' AND "CLASS"."DEPARTMENT"='CMPSC') </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload