2016-05-17 16 views
0
----------  ----------  ---------- 
| TBL_1 |  | TBL_2 |  | TBL_3 | 
----------  ----------  ---------- 
| id  |  | id  |  |TBL_1_id| 
| foo |  | bar |  |TBL_2_id| 
----------  ----------  ---------- 

私は、この特定のテーブルセットをMySQLに持っています。 TBL_3は、TBL_1とTBL_2の行を結合する複合表です。私はTBL_3を照会してTBL_1とTBL_2の内容を出力したいのですが、JOINという概念を把握できていないようです。私が読んだ、それは多少このようにする必要がありますに基づいて
MySQLコンポジットテーブルJOIN QUERY

SELECT * tbl_3
FROMは、RIGHT(tbl_1.id = tbl_3.tbl_1_id、 tbl_2.id ON(tbl_1、tbl_2)に参加します= tbl_3.tbl_2_id)
WHERE tbl_3.id = 'some_id';

私は何も得ていません。また、私はそのクエリを微調整すると、行が返されますが、なぜIDKの理由は表示されません。どうしてこれなの?

**上記のクエリはこれと同じですか? tbl_3
FROM

SELECT *がRIGHT tbl_1.id = tbl_3.tbl_1_id
右tbl_2.id = tbl_3.tbl_1_id
tbl_3.id = 'some_id' にtbl_2をJOIN ON tbl_1をJOIN。

**編集:複数の結合/ワットを超えるクエリを解釈する際に、第一RIGHT JOINの積である第二RIGHT JOIN返されるテーブルによって参照されて左表のですか?

+1

ご希望の出力は何ですか? –

+0

私はtbl_1.foo'とtbl_2.'bar'を出力したいと思います... – Valkyrurr

+0

tbl_3を使用しているときにtbl_2.barが一致するかどうかにかかわらず、tbl_1.fooを出力しますか?その場合は、外部結合を使用する必要があります。そうでない場合は、tbl_3、tbl_1およびtbl_2に対してequijoin(プレーン・ジョイン)を使用します。内部結合の場合は、tbl_3をファクト表として使用する必要があります。 tbl_2の値がない場合は、tbl_1とtbl_2を外側のtbl_1に結合する必要があります。 –

答えて

0

次のクエリでは、あなただけがブリッジテーブルTBL_3に表示されるすべてのidペアのTBL_1TBL_2からの情報を表示するために使用することができるものの行です:

SELECT t1.foo, t2.bar 
FROM TBL_1 t1 
INNER JOIN TBL_3 t3 
    ON t1.id = t3.TBL_1_id 
INNER JOIN TBL_2 t2 
    ON t2.id = t3.TBL_2_id 
0
SELECT t1.foo, t2.bar 
FROM TBL_1 t1 
left join TBL_3 t3 
    ON t1.id = t3.TBL_1_id 
left JOIN TBL_2 t2 
    ON t2.id = t3.TBL_2_id;