Saya yakin Anda dapat menganggap ini sebagai masalah prioritas operator.
Saat Anda menulis ini:
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
Saya pikir itu ditafsirkan oleh parser seperti ini:
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
)
Jika demikian, maka yang paling dalam bergabung dengan "grp" tidak terikat.
Saat Anda membalikkan baris dengan "grup" dan "insrel", gabungan terdalam berlaku untuk "grup" dan "ownrel", jadi itu berfungsi.
Mungkin ini akan berhasil juga:
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