MySQL で FULL OUTER JOIN を実行しようとしていますが、その構文では不可能であることは誰もが知っています。したがって、私が使用している通常のいじくり回しのように:
(T1 左外部結合 T2) ユニオン (T1 右外部結合 T2)
これがキャッチです!個々の結合 (左と右) はそれぞれ魔法のように機能しますが、一緒にするとエラー (1064: 構文エラー) が発生し、正しい構文について MySQL サーバーのマニュアルを確認するように求められます。
コードは次のとおりです。
(SELECT
*
FROM
result LEFT OUTER JOIN
((SELECT * FROM SQA AS sqa JOIN SA AS sa USING (sa_oid) WHERE sqa.sq_oid = 1)
AS tmp1) ON tmp1.sa_oid = result.re_as
WHERE
result.re_p = 1 AND
result.re_s = 1 AND
result.re_q = 1)
UNION
(SELECT
*
FROM
result RIGHT OUTER JOIN
((SELECT * FROM SQA AS sqa JOIN SA AS sa USING (sa_oid) WHERE sqa.sq_oid = 1)
AS tmp2) ON tmp2.sa_oid = result.re_as
WHERE
result.re_p = 1 AND
result.re_s = 1 AND
result.re_q = 1)
ここでも、左右の 2 つの結合は個別に機能しますが、UNION 演算子と組み合わせると構文エラーが発生するようです。何か案は?名前の衝突はありますか? または、この場合、FULL OUTER JOIN は不可能ですか?
どんなフィードバックでも大歓迎です!また、質問の些細なことをお許しください(些細な場合)。
編集:
"Error Code: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ON tmp2.sa_oid = result.re_as
WHERE
result.re_p = 1 AND
result.re' at line 20"