私はいくつかのテーブルを以下のようなクエリで結合しようとしています。私は理想的にbテーブルが参照するc.nameを取得したいからです。 bテーブルが結果セットに行を持たないか、またはb行がcを参照していない場合は、テーブルが参照するc.nameを取得します。左結合の順序節
SELECT a.*, c.name
FROM a
LEFT JOIN b ON a.b_id = b.id
LEFT JOIN c ON (b.c_id IS NOT NULL AND b.c_id = c.id) OR a.c_id = c.id
しかしMySQLは常にa.c_id = c.id
とCに入社し、あまり好まれc.nameを得ています。これを回避することは可能ですか、またはできるだけ早く完全な結果セットを取得しようとしていますか?
あなたは、いくつかの(CREATE TABLE文など)テーブル定義、テストデータ(INSERT文として)及び(チェックするのは簡単なものとして)期待される出力を持っています。私は本当にあなたのクエリをテストしたいが、テーブルとテストデータを作成する時間を費やしたくない。 SQL IDEですぐに実行できます。 http://sqlfiddle.comの使用を検討しましたか? –