uchiumiです。
今日のデータベースは副問い合わせについて学びました。
副問い合わせ
今日から新しく、テーブルを2つ使った処理というものをやりました。
副問い合わせとは、他のテーブルを参照し、その結果を反映させるというものです。
副問い合わせにはいくつかやり方があり、今日はそのうちの2つについて学びました。
WHERE句に書く場合
WHERE句で副問い合わせをすると、違うテーブルの中をでの条件式をつくることができま
す。
今日は副問い合わせのやり方としてIN(NOT IN)を教えてもらいました。
書き方は、
SELECT Number FROM テーブル1 WHERE Number IN( SELECT Number FROM テーブル2);
と書くと、テーブル2の中にテーブル1のNumberと一致するものがあれば、それの結果を返してくれるというものです。
WHERE句の中にSELECTがあるなど、どこで何をしているのか混乱しそうですが、これから慣れて行きたいと思いました。
SELECT句に書く場合
SELECT句で副問い合わせをすると、違うテーブルのデータを表示することができます。
SELECT Number,( SELECT Name FROM テーブル2
WHERE テーブル1.Number = テーブル2.Number ) AS 顧客名
FROM テーブル1;
と書くと、テーブル2の中にテーブル1のNumberと一致するNameが表示されます。
ここではWHERE句と違い、テーブル2とテーブル1のNumberが同じということを確かめるためには、副問い合わせのWHERE句の中で
テーブル名.カラム名 = テーブル名2.カラム名
という様に書いてあげます。
同じ副問い合わせですが、書き方が違ったりして難しいと感じました。
また2つのテーブルがでてくるということで、これからはお互いのテーブルの関係性を考えてSQL文を書く必要性があるとのことでした。
2つのテーブルを使うことによっていきなり難しさが増した気がします。
練習問題をやっていても、どことどこを結びつければどんな結果が返ってくるかなど、まだちゃんと理解できていないところがありました。
しかしこれからは複数のテーブルを扱うのが普通になっていくようなので、早く慣れていきたいと思います。
また、今日は先日行ったテストのフィードバックとして、
GROUP BYで指定したカラムはSELECTに絶対に書いておくべき、ということを教えていただきました。
問題文からだと読み取れないことなので、これから気をつけていきたいと思います。
また他にもGROUP BYでのミスが多かったみたいなので、新しいところだけでなく昔やったGROUP BYやLIKEなどの使い方についても復習していこうと思います。
(2008/07/14 18:06 uchiumi追記)
動画をアップしました!
part.1
part.2

by スタートアップ研修記 » データベース テーブルの結合, on 07.10.08 @ 6:31 PM
[...] 今回は、前回の副問い合わせよりもわかりやすいと感じました。 [...]