Tento druh dotazu by měl fungovat - po přepsání explicitním JOIN
syntaxe:
SELECT something
FROM master parent
JOIN master child ON child.parent_id = parent.id
LEFT JOIN second parentdata ON parentdata.id = parent.secondary_id
LEFT JOIN second childdata ON childdata.id = child.secondary_id
WHERE parent.parent_id = 'rootID'
Vypínací drát je zde explicitní JOIN
se váže před "starým stylem" CROSS JOIN
s čárkou (,
). Příručku cituji zde:
Po přepsání prvního se všechna spojení aplikují zleva doprava (logicky – Postgres může jinak uspořádat tabulky v plánu dotazů) a funguje to.
Abych uvedl můj názor, toto by také fungovalo:
SELECT something
FROM master parent
LEFT JOIN second parentdata ON parentdata.id = parent.secondary_id
, master child
LEFT JOIN second childdata ON childdata.id = child.secondary_id
WHERE child.parent_id = parent.id
AND parent.parent_id = 'rootID'
Ale explicitně JOIN
syntaxe je obecně vhodnější, jak váš případ znovu ilustruje.
A mějte na paměti, že více (LEFT
) JOIN
může násobit řádky: