2017-10-02 12 views
0

1つのテーブルの行に異なる値を取得しようとしていますが、その方法を考えることはできません。INNER JOINが1つのテーブルであるが異なるパラメータ

例えばとしましょう:

table1 
id | name | empCode | insCode 
1 John | E101 | I101 


table2 
id | code | name | role 
1 | E101 | Mich | 2 
2 | I101 | Bran | 3 

TABLE1は、表2にcoderole上の表2のreference id、およびTABLE1 dependesでempCodeinsCodeを持っています。

は、私が欲しいのは、このようなものです:1つのselectクエリで同じテーブルの複数の行を取得するために、その可能ならば、私は正直分からない

。 そうでない場合、他に可能な解決策はありますか? SELECT *、 TABLE1 FROM b.roleは、内側がa.id = b.id

また

上の表2のBに参加するあなたは表2からempcodeとinscodeを削除することを検討することもできます。

答えて

1

あり、問題は、あなたのテーブルの設計であるが、あなたのように得ることができ、あなたの下のクエリを期待:

select 
result1.id, 
result1.code, 
result1.name, 
result1.empCode, 
result1.insCode, 
result1.role as role_of_empCode, 
result2.role as role_of_insCode 
from (
    SELECT tbl1.id, 
    tbl2.code, 
    tbl1.name, 
    tbl1.empCode, 
    tbl1.insCode, 
    tbl2.role 
    FROM `table2` tbl2 
    INNER JOIN `table1` tbl1 
    on tbl2.code = tbl1.empCode 
) as result1, 
`table2` result2 
where result1.insCode = result2.code 
ORDER BY result1.id; 

You can check in this link

+0

ありがとうございます。あなたが提供したリンクをチェックすると、これは私が探している正確な可能な答えのようです。答えとしてマーク。本当にあなたの助けと時間を感謝します。ありがとうございました。 – Marksmanship

1

のようなものを試してみてください。あなたの目的が何であるかに応じて、表1では冗長であるため、逆も同様です。

+0

私は何か「内部結合」を知っていますが、問題は私の「テーブル」設計なので、私が望むように動作しません。だから、その場合、私がしたことは、別の '行'を取得するための別のクエリを作成して動作しますが、今は代わりに1つのクエリで2つになります。私はそれがどうなるかと思います。とにかくあなたの投稿された答えをありがとう。 – Marksmanship

関連する問題