ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.3467775 SQL・・・分かりません。
質問者:po_ponchan SQLの勉強をしています。
仕事の研修で習っているのですが、基礎的なものを学習しましたが
応用したパターンが全く理解ができません。

例としまして
・AテーブルとBテーブルを結合して、データを抽出する
・Aテーブルに存在しているのに、Bテーブルに存在していないデータも抽出する
・しかし、Aテーブルに存在していないのに、Bテーブルに存在しているはデータは抽出しない

☆抽出方法に二パターン存在する

1つ目も全く見当つかずです。ヒントでよいので教えていただけたらと思います。
意味が分からなかったらすみません。何を描き足したらよいか教えて下さい。
宜しくお願いしたします。
困り度:
  • すぐに回答を!
質問投稿日時:
07/10/28 05:33
この質問に対する回答は締め切られました。

回答良回答10pt

ANo.3 #1さんの追加でoracleのクセの方を・・・
select *
from A,B
where A.key = B.key(+)

この場合、B側が外部結合され
提示された条件で、抽出されるようになります。
初めての頃はいっぱいsqlを書いてtry&errorをやってみましょう。
#1さんの紹介されているotnでいろんなテスト出来ますよ。
回答者:omotasam
種類:回答
どんな人:専門家
自信:参考意見
回答日時:
07/10/28 06:25
この回答へのお礼回答ありがとうございます。

私のなかでは一般的なSQLというんでしょうか?
それもなかなかままならない状況でして
(+)の使用方法は全く思いつきもしませんでした。
たくさん書いて覚えていきたいとおもいます。
ありがとうございました。

回答

ANo.2 #1です。

「前の質問でも回答したように、Oracle 10g Express Editionがあります」

「前の質問でも回答したように、無料で使えるOracle 10g Express Editionがあります」

に訂正しておきます。
回答者:chukenkenkou
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
07/10/28 05:52
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答良回答20pt

ANo.1 基本的な外部結合です。

select *
from A left join B
on A.key=B.key

Oracleでは、(+)を使う独自構文もあったはずです。

この程度のSQLなら、ネットでSQLの解説をしているサイトが、いくらでも見つかるはずです。

Oracleには、前の質問でも回答したように、Oracle 10g Express Editionがあります。また、もっと手軽なものには、Oracle Master受験者向けに、Web上でSQLを実行できる(検索や更新だけ可能。表の定義等はできない)環境を提供しています。

http://otn.oracle.co.jp/training/index.html

どちらも、利用するには、無料の会員登録が必要です。
会員登録することで、Oracleの様々な情報を得られるようになります。

<SQLについての解説サイト例>
http://www.rfs.jp/sb/sql/index.html
http://www.techscore.com/tech/sql/index.html
回答者:chukenkenkou
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
07/10/28 05:50
この回答へのお礼再び回答ありがとうございます。
まったくの勉強不足で、外部結合というものも分りませんでした(^_^;)
教えていただいたサイトで勉強させていただきました!
それでも、まだ分からない点が多いのですが、、、。

>・AテーブルとBテーブルを結合して、データを抽出する
>・Aテーブルに存在しているのに、Bテーブルに存在していないデータ抽出 する
>・しかし、Aテーブルに存在していないのに、Bテーブルに存在しているはデータは抽出しない
の2行目の文を
・Aテーブルに存在しているのに、Bテーブルに存在していないデータは抽出 しない
3行目の文を
・しかし、Aテーブルに存在していないのに、Bテーブルに存在しているはデータは抽出する
にした場合は

select *
from A right join B
on A.key=B.key

leftの部分をrightにすればよいのでしょうか?

この辺がいまいち分からないでおります。