プロが教えるわが家の防犯対策術!

SQLの勉強をしています。
仕事の研修で習っているのですが、基礎的なものを学習しましたが
応用したパターンが全く理解ができません。

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

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

1つ目も全く見当つかずです。ヒントでよいので教えていただけたらと思います。
意味が分からなかったらすみません。何を描き足したらよいか教えて下さい。
宜しくお願いしたします。

A 回答 (3件)

基本的な外部結合です。



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
    • good
    • 0
この回答へのお礼

再び回答ありがとうございます。
まったくの勉強不足で、外部結合というものも分りませんでした(^_^;)
教えていただいたサイトで勉強させていただきました!
それでも、まだ分からない点が多いのですが、、、。

>・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にすればよいのでしょうか?

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

お礼日時:2007/10/28 08:47

#1さんの追加でoracleのクセの方を・・・


select *
from A,B
where A.key = B.key(+)

この場合、B側が外部結合され
提示された条件で、抽出されるようになります。
初めての頃はいっぱいsqlを書いてtry&errorをやってみましょう。
#1さんの紹介されているotnでいろんなテスト出来ますよ。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

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

お礼日時:2007/10/28 08:54

#1です。



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

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

に訂正しておきます。
    • good
    • 0

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

関連するカテゴリからQ&Aを探す