SQLの勉強をしています。
仕事の研修で習っているのですが、基礎的なものを学習しましたが
応用したパターンが全く理解ができません。
例としまして
・AテーブルとBテーブルを結合して、データを抽出する
・Aテーブルに存在しているのに、Bテーブルに存在していないデータも抽出する
・しかし、Aテーブルに存在していないのに、Bテーブルに存在しているはデータは抽出しない
☆抽出方法に二パターン存在する
1つ目も全く見当つかずです。ヒントでよいので教えていただけたらと思います。
意味が分からなかったらすみません。何を描き足したらよいか教えて下さい。
宜しくお願いしたします。
No.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
再び回答ありがとうございます。
まったくの勉強不足で、外部結合というものも分りませんでした(^_^;)
教えていただいたサイトで勉強させていただきました!
それでも、まだ分からない点が多いのですが、、、。
>・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にすればよいのでしょうか?
この辺がいまいち分からないでおります。
No.3
- 回答日時:
#1さんの追加でoracleのクセの方を・・・
select *
from A,B
where A.key = B.key(+)
この場合、B側が外部結合され
提示された条件で、抽出されるようになります。
初めての頃はいっぱいsqlを書いてtry&errorをやってみましょう。
#1さんの紹介されているotnでいろんなテスト出来ますよ。
回答ありがとうございます。
私のなかでは一般的なSQLというんでしょうか?
それもなかなかままならない状況でして
(+)の使用方法は全く思いつきもしませんでした。
たくさん書いて覚えていきたいとおもいます。
ありがとうございました。
No.2
- 回答日時:
#1です。
「前の質問でも回答したように、Oracle 10g Express Editionがあります」
↓
「前の質問でも回答したように、無料で使えるOracle 10g Express Editionがあります」
に訂正しておきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle SQLについて教えて下さい。 主キーを持ったカラムを主キーの機能を持たせたまま カンマ区切りで文字列 1 2023/03/27 22:47
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- Oracle sqlで質問です。 Aテーブルの情報をBテーブルに更新かけたいです。 やりたいことは、Bテーブルの受 1 2023/05/17 11:17
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- その他(データベース) IT用語について質問です。 以前ITパスポートの試験を受けた際にデータベースが何の集まりかについての 2 2022/12/10 12:29
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
GROUP BYを行った後に結合した...
-
SET句内で複数の条件を指定して...
-
マテビューのNOTNULL設定について
-
再起SQL が無限ループします。
-
写真のsql文空白をハイフン表示...
-
MERGE文を単体テーブルに対して...
-
oracleの分割delete
-
テーブルの列名をデータとして...
-
他のテーブルを参照した値はupd...
-
異なるテーブルのレコード削除
-
unionの結果は集計はできないで...
-
select insertで複数テーブルか...
-
unionでマージした副問合せを結合
-
外部結合とor条件混在の記述方法
-
集計後の数値が倍になる
-
SQLの書き方(チェックボックス)
-
SELECTの結果で同一行を複数回...
-
Oracleでの文字列連結サイズの上限
-
SQL文で右から1文字だけ削除す...
-
Accessで別テーブルの値をフォ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
GROUP BYを行った後に結合した...
-
select句副問い合わせ 値の個...
-
select insertで複数テーブルか...
-
SELECTの結果で同一行を複数回...
-
MERGE文を単体テーブルに対して...
-
固定値を含む結合と複数テーブ...
-
複数テーブルのMAX値の行データ...
-
他のテーブルを参照した値はupd...
-
unionの結果は集計はできないで...
-
外部結合とor条件混在の記述方法
-
oracleの分割delete
-
SET句内で複数の条件を指定して...
-
SQL GROUPで件数の一番多いレコ...
-
DELETE 文とEXISTSの使い方につ...
-
COUNTの取得方法(?)について...
-
集計後の数値が倍になる
-
SQLの書き方(チェックボックス)
-
unionでマージした副問合せを結合
-
副問い合わせのinsert文
-
結合と副問い合わせの違い
おすすめ情報