私は同じIDで複数のジョインをしようとしており、各テーブルにはそのIDのエントリがある場合とない場合があります。可能な空の結果セットを持つ複数のテーブルでJOINSのデフォルト値を設定しますか?
SELECT a.value, b.value, c.value, d.value FROM tbl_a a
JOIN tbl_b b ON a.id=b.id
JOIN tbl_c c ON a.id=c.id
JOIN tbl_d d on a.id=d.id
WHERE a.id=123
は明らかにこれはTBL_Aがエントリを持っていない持っていない場合、それは空の結果を返し、失敗合流ので、失敗しています。
私はあらゆる種類の左ジョインと外部ジョインを試しましたが、動作させることができませんでした。私はまた、were節を次のように設定しようとしました:WHERE a.id=123 OR b.id=123 OR ...
しかし、それもうまくいきませんでした。
私は醜いUNIONを試みましたが、それは別の行に出力します。
SELECT count(*), "a", IFNULL(a.value,0) FROM tbl_a a WHERE a.id=123
UNION
SELECT count(*), "b", IFNULL(b.value,0) FROM tbl_b b WHERE b.id=123
UNION
etc...
なるほど、私は左外部結合をやっていた、私は右にやるべきこと外部結合とそれは動作するようです。 – kenhcwoo
私はクエリを試しましたが、説明ではインデックスidを使用しないと言います:SELECT a.value、b.value、c.value、d.value FROM tbl_a a右外部ジョイントtbl_b b ON b.id = a .id右のジョインtbl_c c ON c.id = a.id右外側のジョインtbl_d dオンd.id = a.idどこa.id = 123またはb.id = 123またはc.id = 123またはd.id = 123 – kenhcwoo