これは、演算子の優先順位の問題と考えることができると思います。
これを書くとき:
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
パーサーは次のように解釈すると思います:
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
)
その場合、最も内側の結合で「grp」はバインドされていません。
「groups」と「insrel」で行を逆にすると、最も内側の結合が「groups」と「ownrel」に適用されるため、機能します。
おそらくこれもうまくいくでしょう:
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