Вярвам, че можете да мислите за това като проблем с приоритета на оператора.
Когато пишете това:
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