Can you have an INNER JOIN without the ON keyword? Can you have an INNER JOIN without the ON keyword? oracle oracle

Can you have an INNER JOIN without the ON keyword?


Small universe... I ran across a tool generating this syntax yesterday and was rather flummoxed.

Apparently,

FROM a      INNER JOIN b     INNER JOIN c ON (b.id = c.id)     ON (a.id = c.id)

is equivalent to a nested subquery

FROM a     INNER JOIN (SELECT <<list of columns>>                   FROM b                        INNER JOIN c ON (b.id=c.id)) c             ON (a.id = c.id)


I think that this is only a problem of ordering your query (since there are only INNER JOINs, the order of them is not really that important). I rearrenged your query and now it looks like this:

SELECT TPM_TASK.TASKID FROM TPM_GROUP INNER JOIN TPM_USERGROUPS     ON TPM_GROUP.GROUPID = TPM_USERGROUPS.GROUPID INNER JOIN TPM_GROUPTASKS     ON TPM_GROUP.GROUPID = TPM_GROUPTASKS.GROUPIDINNER JOIN TPM_TASK    ON TPM_TASK.TASKID = TPM_GROUPTASKS.TASKID INNER JOIN TPM_PROJECTVERSION     ON TPM_TASK.PROJECTID = TPM_PROJECTVERSION.PROJECTID     AND TPM_TASK.VERSIONID = TPM_PROJECTVERSION.VERSIONID INNER JOIN TPM_TASKSTAGE     ON TPM_TASK.STAGEID = TPM_TASKSTAGE.STAGEID INNER JOIN TPM_PROJECTSTAGE     ON TPM_PROJECTVERSION.STAGEID = TPM_PROJECTSTAGE.STAGEID 

Does it make more sense to you now?, it does to me.


It'd look fine if it had parenthesis in there...

SELECT TPM_TASK.TASKID FROM     TPM_GROUP     INNER JOIN TPM_USERGROUPS ON TPM_GROUP.GROUPID = TPM_USERGROUPS.GROUPID     INNER JOIN (        TPM_TASK        INNER JOIN TPM_GROUPTASKS ON TPM_TASK.TASKID = TPM_GROUPTASKS.TASKID         INNER JOIN TPM_PROJECTVERSION ON TPM_TASK.PROJECTID = TPM_PROJECTVERSION.PROJECTID             AND TPM_TASK.VERSIONID = TPM_PROJECTVERSION.VERSIONID         INNER JOIN TPM_TASKSTAGE ON TPM_TASK.STAGEID = TPM_TASKSTAGE.STAGEID         INNER JOIN TPM_PROJECTSTAGE ON TPM_PROJECTVERSION.STAGEID = TPM_PROJECTSTAGE.STAGEID     ) ON TPM_GROUP.GROUPID = TPM_GROUPTASKS.GROUPID

but since they are all inner joins I agree with Lamak's answer.