Inner join と Left joinの違いがよくわかりません。
教えてください。

A 回答 (4件)

出てくる結果が違います。



テーブル1のフィールド1に、






が、

テーブル2のフィールド1に、






が入力されている場合、

SELECT [テーブル1].[フィールド1], [テーブル2].[フィールド1]
FROM テーブル1 LEFT JOIN テーブル2 ON [テーブル1].[フィールド1]=[テーブル2].[フィールド1];
では、結果は、
テーブル1.フィールド1 テーブル2.フィールド1
1               1
2               2
3               3
4               NULL
5               NULL
6               NULL
の6レコードが出力されますが、

SELECT [テーブル1].[フィールド1], [テーブル2].[フィールド1]
FROM テーブル1 INNER JOIN テーブル2 ON [テーブル1].[フィールド1]=[テーブル2].[フィールド1];
では、結果は、
テーブル1.フィールド1 テーブル2.フィールド1
1               1
2               2
3               3
の3レコードしか出力されません。
    • good
    • 12
この回答へのお礼

ありがとうございます。
説明、シンプルでとてもわかりやすかったです。
使わせてくださいね☆

お礼日時:2004/01/09 16:24

対応させるべきはinner joinとouter joinなんですけど、


left join は left outer join と同等です。

innter joinは結合する相手のテーブルに対応するデータが
ある場合のみ結果を返しますが、outer joinは相手の
テーブルに対応するデータが無い場合、そのカラムを
NULLとして返します。

あるouter joinのクエリの結果が
(等幅で見れればいいんだけど)
field1 |field2 |
--------+--------+
Apple  |Red   |
Melon  |NULL  |
Grape  |Purple |
--------+--------+

だとしたら、inner joinは
field1 |field2 |
--------+--------+
Apple  |Red   |
Grape  |Purple |
--------+--------+

のように返します。outer joinは他にright outer joinと
full outer joinがあります。
    • good
    • 3
この回答へのお礼

outer join・・・?
ちょっと調べてみます。ありがとうございました。

お礼日時:2004/01/09 16:26

#1の者です。


先ほどの投稿、以下2点修正します。

>「INNER JOIN」は結合する両方のテーブルにデータがある場合にのみ毛と号の結果データが取得できる、という意味。

→「INNER JOIN」は結合する両方のテーブルにデータがある場合にのみ結合結果データが取得できる、という意味。

>売上伝票番号:00000000001が取得できないのは商品コード:000000003が商品マスタにないからです。

→売上伝票番号:00000000002が取得できないのは商品コード:000000003が商品マスタにないからです。
    • good
    • 0
この回答へのお礼

ありがとうございました!!
スッキリ納得できました。

お礼日時:2004/01/09 16:24

簡単に言いますと、


「INNER JOIN」は結合する両方のテーブルにデータがある場合にのみ毛と号の結果データが取得できる、という意味。
一方、「LEFT JOIN」は片方にデータがなくても結合結果データが取得できる、という意味です。

例えば、
売上テーブルと商品マスタがあったとします。
データは以下のように入ってます。

売上テーブル
売上伝票番号 商品コード
00000000001 000000001
00000000002 000000003

商品マスタ
商品コード 商品名
000000001 テレビ
000000002 パソコン

このとき、

SELECT 売上伝票番号, 商品名
FROM 売上テーブル
INNER JOIN 商品マスタ
ON 売上テーブル.商品コード = 商品マスタ.商品コード

のSQLでは

売上伝票番号 商品名
00000000001 テレビ

が返ってきます。
売上伝票番号:00000000001が取得できないのは商品コード:000000003が商品マスタにないからです。

次に、

SELECT 売上伝票番号, 商品名
FROM 売上テーブル
LEFT JOIN 商品マスタ
ON 売上テーブル.商品コード = 商品マスタ.商品コード

のSQLでは

売上伝票番号 商品名
00000000001 テレビ
00000000002 [NULL]

が返ってきます。
商品コード:000000003は商品マスタにありませんが、商品名はNULLで売上テーブルのデータは取得されます。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

今、見られている記事はコレ!

  • エルフ田さん:第71話「貯められる人」

    エルフ(ファンタジーとかに出てくる長寿の種族)の「エルフ田」と、ただの人間である女子社員2人による日常ギャグ。エルフならではのズレたツッコミでバシバシ人間界の話題を斬っていきます。

  • 感情的にならない人の気質

    あなたの身の回りで感情表現が薄い人はいないだろうか? 感情表現が薄いといい意味でクールに感じ、大人な印象を持つ人も多いだろう。だが、一方で何を考えているか分からず、とっつきづらい印象を抱くこともあるの...

  • デニーズで6月7日より「ビーフフェア」が開催

    デニーズで2016年6月7日から7月11日(予定)まで、「ビーフフェア」が開催される。気温も上昇し、スタミナを身体に取り入れたいこの時期におすすめなビーフメニュー4品が提供される。 登場する4品は、しっとりとし...

  • 「死刑になりたくてやった」――望み通りの死刑が正しいか否か

    後を絶たない凶悪犯罪の中には、「死刑にしてもらいたくて」という動機で罪のない人々を巻き込む事件もある。その事件のための裁判で死刑判決が確定すれば、犯人の願いはかなったことになってしまう。いくら法律と裁...

おしトピ編集部からのゆる~い質問を出題中

お題をもっとみる

このQ&Aを見た人が検索しているワード


このQ&Aを見た人がよく見るQ&A

このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ