2017-06-16 10 views
0

私は、左の結合を練習しようとしています。なぜ左の結合で結果が列の下にいくつかの行が表示されます

これらの2つのテーブルであり、赤 第一の試みを強調し、共通のいくつかの詳細を持っている - 私は内部結合を実行すると、私は赤 クエリで4行に一致する正しい結果を得ることはあり

select * from empl1 
inner join empl2 on empl1.empl_code=empl2.empl_code 

下など第二試み - 私が参加し、左を実行すると、私は共通しているすべての4行を得るが、6行の残りの部分は、すべてのNULL値 - が

select * from empl2 
left join empl1 on empl2.empl_code=empl1.empl_code 

下の第三試みとしてクエリを参照してください示して - 列のタイトルに言及して左結合を実行すると、指定列を除くすべての列に完全な値が得られます。指定列では、一致する行を除いてNULL値が返されます。なぜ私はNULL値と結合左に問題に直面しています2

を1を試してみて、試してみてくださいため

SELECT empl1.empl_code, empl1.fullname, empl2.designation, empl1.salary, empl1.department, empl1.tablename 
FROM Empl1 
left join empl2 on empl1.empl_code = empl2.empl_code 

の下で結果としてクエリを参照してください?なぜ2回目の私はすべての列の値を取得し、指定でnullを取得するのですか?

私は左が参加

+0

ようこそStackOverflow。 [良いSQL質問をする方法をお読みください](https://meta.stackoverflow.com/a/271056/5234334)。また、画像ではなくコピーできるテーブルの観点からデータを入れます。 – Utsav

+1

それはLEFT JOINの全体のポイントです。結果には、最初のテーブルのすべての行が含まれます。 2番目のテーブルに一致するものがあれば、そのテーブルからカラムを取得します。そうでなければ 'NULL'を取得します。 – Barmar

+0

さまざまなタイプのジョインについてこのチュートリアルを読んでください:http://blog.codinghorror.com/a-visual-explanation-of-sql-joins/ – Barmar

答えて

0

が一致しないレコードをleftテーブルとnullからあなたにすべてのレコードを与える理解するのに役立ちます。

Try 3にはempl2.designationが選択されているため、一致しないレコードの場合はnullとなります。

try 2では、ちょうどselect empl2.* from empl2 left join....の場合はnullが返されません。私はあなたが正確なスクリーンショットを与えていないと信じています。

rextester.comでデモを作成し、他に疑問があればあなたの作品を共有することをお勧めします。

0

LEFT JOINがempl2にあり、最初の列がempl2.empl_codeがNULLであるため、LEFT JOINが表empl1にある2番目の文ではなく、最初の列がempl1です。 empl_code。 LEFT JOINと同じテーブルを使用すると、同じ結果が表示されます。

関連する問題