2017-08-31 8 views
1

のJOINは、以下のロジックを理解したいと思います。私はSQLとかなり新しいです使用し、内側に

SELECT * 
FROM Table A A1 
INNER JOIN TABLE B B1 ON B1.ID = A1.ID AND A1 = 'TASK'; 

これが明確な詳細なのかわかりませんが、私に知らせてください。ありがとう!

+3

あなたは何を理解していますか?それはかなり明らかです。 –

+4

'AND A1 = 'TASK''私はカラム名があるべきだと信じています – lad2025

+0

それがどうやってその論理が働いているのかわからないのですが、それをキャッチするために@ lad2025に感謝します。 INNER JOIN。 – sonnymoon

答えて

3
SELECT * 
FROM Table A A1 
    INNER JOIN TABLE B B1 ON B1.ID = A1.ID AND A1.Column = 'TASK' 

それはそれはクエリを記述するだけで別の方法です、でも同じパフォーマンスが賢明です

SELECT * 
FROM Table A A1 
    INNER JOIN TABLE B B1 ON B1.ID = A1.ID 
WHERE A1.Column = 'TASK' 

と同じです。非常に大規模なクエリでは、それWHERE一部に「隠れ」の代わりにINNER JOINに直接ANDを使用するように読みやすくすることができます。

1

SELECT * - 選択したすべての列

TABLE A A1 FROM

- テーブルAからA1は、ニックネームのようにあなたがテーブルAを与える代わりにA.ColumnNameを入力しているされて(A非常に長い名前が)あなただけのA1.ColumnName

INNERが表BのB1を結合タイプcouldbe - あなたが再び表AとBを結ぶ内側のある、B1は単なるニックネームです。ここでは、結合を説明する良い画像です。 B1.ID = A1.ID ON enter image description here

- これは、2つのテーブルは、これらが同じデータを含む必要がある共通の(関係カラム)を持っているカラムです。

とA1が=「タスク」 - これは私が列名を追加したので、A1のテーブル名

2

これはこれは、実行するすべての

SELECT * 
FROM Table A A1 INNER JOIN 
    TABLE B B1 
    ON B1.ID = A1.ID AND A1 = 'TASK'; 

で実行されないだろうどこに参加していると言っています(SomeColumn):

SELECT * 
FROM Table A A1 INNER JOIN 
    TABLE B B1 
    ON B1.ID = A1.ID AND A1.SomeColumn = 'TASK'; 

そしてこの

と同じですあなたが定数に参加するたびに
SELECT * 
FROM Table A A1 INNER JOIN 
    TABLE B B1 
    ON B1.ID = A1.ID 
WHERE A1.SomeCoumn = 'TASK'; 

は、それはかなりwhere句に追加の基準を追加するのと同じです。結合でそれを記述する唯一の理由は、コードの明快さです。

+0

それは何を意味するのでしょうか? – SandPiper

+0

うん、私はただ、OPの誤りに気づき、私の答えを編集しました –

関連する問題