フクの非日常

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

決め手はJOIN

2つの表を結合するためには、WHERE句で条件をつければよい。
社員テーブルから氏名、給与テーブルから月給を社員番号をキー持ってくるとしよう。
(どっちのテーブルにも社員番号フィールドがあるという前提だ!)

【例1】
SELECT 社員テーブル.氏名,給与テーブル.月給
FROM 社員テーブル,給与テーブル
WHERE 社員テーブル.社員番号=給与テーブル.社員番号;

みたいな感じで叩くと、氏名、月給のリストができあがる。
これは社員テーブルと給与テーブルをくっつけて出してもらってるのだな。
このテーブル結合というのが曲者で、いろんな結合のしかたがある。
例1で書いたのは、内部結合というヤツだ。
両方のテーブルにあるものだけが取り出される。
たとえば、退職して社員じゃなくなった人が社員テーブルから消えたとしましょ。
その人の社員番号が給与テーブルに残っていたとしても、
社員テーブルから消えてしまっているので、内部結合では選択しない、となる。

【例2】
SELECT 社員テーブル.氏名,給与テーブル.月給
FROM 社員テーブルJOIN 給与テーブル
ON 社員テーブル.社員番号=給与テーブル.社員番号;

この書き方でもテーブルは内部結合される。省略されているが、INNER JOINというやつだ。
(やっとINNER JOINがわかったよ。。)
テーブルの結合には2つの構文があるということだ。

ExcelのVBAでSQLを書くときはちょいと注意が必要で、
例1の書き方ではエラー、例2の書き方だと通る、という仕様のようだ。
DBに直接叩くときは、どっちも通るのに。厄介だねえ。

VBAって使えるのはわかっているのだが、使いこなすのが大変だ。
今日のところは自分も躓いたので、きっと他の人も悩むにちがいない。
こんなのって、何かの形で残ると世のため人のためだなあ。
いつの日かVBAを整理したサイトを作ろう。
きょうはその宣言をするところまで。

コメント


管理者にだけ表示を許可する
 

 

トラックバック

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。