Ik denk dat je dit kunt zien als een probleem met de prioriteit van de operator.
Wanneer je dit schrijft:
FROM groups grp,
insrel archiverel
LEFT OUTER JOIN ownrel ownrel ON grp.number = ownrel.dnumber
LEFT OUTER JOIN tags tags ON tags.number = ownrel.snumber
Ik denk dat het door de parser als volgt wordt geïnterpreteerd:
FROM groups grp,
(
(
insrel archiverel
LEFT OUTER JOIN ownrel ownrel ON grp.number = ownrel.dnumber
)
LEFT OUTER JOIN tags tags ON tags.number = ownrel.snumber
)
Als dat zo is, dan is in de binnenste join "grp" niet gebonden.
Als je de regels met "groups" en "insrel" omdraait, is de binnenste join van toepassing op "groups" en "ownrel", dus het werkt.
Waarschijnlijk zou dit ook werken:
FROM groups grp
JOIN insrel archiverel ON archiverel.dnumber = grp.number
LEFT OUTER JOIN ownrel ownrel ON grp.number = ownrel.dnumber
LEFT OUTER JOIN tags tags ON tags.number = ownrel.snumber
WHERE archiverel.snumber = 11128188