Creo que puede pensar en esto como un problema de precedencia de operadores.
Cuando escribes esto:
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
Creo que el analizador lo interpreta así:
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
)
Si es así, entonces en la unión más interna "grp" no está vinculado.
Cuando invierte las líneas con "groups" e "insrel", la combinación más interna se aplica a "groups" y "ownrel", por lo que funciona.
Probablemente esto también funcionaría:
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