Denne form for forespørgsel burde virke - efter omskrivning med eksplicit JOIN
syntaks:
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'
Udløserledningen her er en eksplicit JOIN
binder før "gammel stil" CROSS JOIN
med komma (,
). Jeg citerer manualen her:
Efter omskrivning af den første, anvendes alle joinforbindelser fra venstre mod højre (logisk - Postgres er fri til at omarrangere tabeller i forespørgselsplanen ellers), og det virker.
Bare for at gøre min pointe, dette ville også fungere:
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'
Men eksplicit JOIN
syntaks er generelt at foretrække, som din case illustrerer igen.
Og vær opmærksom på, at flere (LEFT
) JOIN
kan gange rækker: