SQLの外部結合と内部結合。

SQLの外部結合と内部結合。 SQLの外部結合と内部結合の違いがいまいち理解できません。外部結合と内部結合はどういった感じで使い分けるのでしょうか。

MySQL1,160閲覧

ベストアンサー

0

データのないレコードも抽出したい時は外部結合 データのないレコードは不要な時は内部結合 テーブル1とテーブル2があって、 テーブル1のデータはA,B,C、 テーブル2のデータはAのとき 外部結合だとA,B,Cが表示(ただしテーブル2のデータはNullで表示) 内部結合だとAのみ表示 商品TBLに、注文TBLを結合させる場合を考えると、 全商品なら外部結合、 注文のあった商品のみの抽出なら内部結合

ThanksImg質問者からのお礼コメント

勉強になりました。ありがとうございました。

お礼日時:2012/12/26 21:49

その他の回答(2件)

0

詳しい説明は既に出ている通りです。 実際の使用上は、 結合するテーブルのみにデータを搾りたい場合は内部結合、 取得結果行数には影響を与えず、単にマスタから付加情報として関連データを引っ張って来たい場合は外部結合、 ってかんじですかね。

0

kazukidaisuさん join で紐付けたレコードが存在しないときにどうするかだけの話ですね。 内部結合の場合、両方のレコードとも存在するケースだけ取得します。 外部結合だと、片方のレコードだけある場合でも(もう片方のレコードの列はNULLとして)取得します。どちらのテーブルを主とするかでleft joinとright joinがあります。 下記サイトの表あたりが(私の説明よりもはるかに)わかりやすいと思います(汗 http://www.pursue.ne.jp/jouhousyo/SQLDoc/select22.html ちなみにマニュアルはこういう説明です(すでに読まれてますよね?) http://dev.mysql.com/doc/refman/5.1/ja/join.html ・INNER JOIN と , (カンマ)は結合条件がない場合には意味的に同等となります。 両方とも、指示されたテーブルの間にデカルト結果を作り出します。(これは、最初のテーブル内の行1つ1つが、2番目のテーブルの行1つ1つに接合されるという事です。) ・もし LEFT JOIN 内の ON か USING 部分内に右側のテーブルに一致する行がなければ、全てのカラムが NULL に設定されている行が右側のテーブルに利用されます。この事実は、別のテーブル内に対応する物を持たないテーブル内の行を見つける為に利用する事ができます。