why do the following queries return different results:

Code:
tableL
LEFT OUTER JOIN
tableR
ON
  tableL.primarykey = tableR.primarykey AND
  tableR.colour = 'orange'
Code:
tableL
LEFT OUTER JOIN
tableR
ON
  tableL.primarykey = tableR.primarykey AND
  'orange' = tableR.colour
the order of the truths in the ON clause matters! can anyone explain why?


try for yourself:

Code:
select *
from
(
  select '1' as pk, 'square' as lef from dual union all
  select '2' as pk, 'circle' as lef from dual union all
  select '3' as pk, 'rectangle' as lef from dual union all
  select '4' as pk, 'trangle' as lef from dual
) tableL
LEFT OUTER JOIN
(
  select '3' as pk, 'red' as rig from dual union all
  select '4' as pk, 'blue' as rig from dual union all
  select '5' as pk, 'red' as rig from dual union all
  select '6' as pk, 'blue' as rig from dual
) tableR
ON
  tableL.pk = tableR.pk AND
  'red' = tableR.rig
Code:
select *
from
(
  select '1' as pk, 'square' as lef from dual union all
  select '2' as pk, 'circle' as lef from dual union all
  select '3' as pk, 'rectangle' as lef from dual union all
  select '4' as pk, 'trangle' as lef from dual
) tableL
LEFT OUTER JOIN
(
  select '3' as pk, 'red' as rig from dual union all
  select '4' as pk, 'blue' as rig from dual union all
  select '5' as pk, 'red' as rig from dual union all
  select '6' as pk, 'blue' as rig from dual
) tableR
ON
  tableL.pk = tableR.pk AND
  tableR.rig = 'red'
results for me with first query:

Code:
PK	LEF	PK	RIG
1	square		
2	circle		
3	rectangle	3	red
4	trangle	4	blue
huhh???


and second

]
Code:
PK	LEF	PK	RIG
1	square		
2	circle		
3	rectangle	3	red
4	trangle
thats correct...


huh???