この種のクエリは機能するはずです-明示的なJOIN
で書き直した後 構文:
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'
ここでのトリッピングワイヤーは、明示的なJOIN
「古いスタイル」の前にバインドCROSS JOIN
カンマ付き( ,
)。 ここでマニュアルを引用します:
最初の結合を書き直した後、すべての結合が左から右に適用され(論理的には、Postgresはクエリプラン内のテーブルを自由に再配置できます)、機能します。
私の主張を述べると、これもうまくいくでしょう:
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'
ただし、明示的なJOIN
あなたのケースがもう一度説明するように、構文は一般的に好ましいです。
また、複数の(LEFT
)JOIN
行を増やすことができます: