まぐまぐ!メルマガ<素人でもできたデータ処理の技>
戻る
 第1号 2005/04/17
 第2号 2005/05/06
 第3号 2005/05/15
 第4号 2005/05/24
 第5号 2005/06/13
 第6号 2005/07/03
 第7号 2005/07/18
 第8号 2005/08/17
 第9号 2005/08/18
 第10号 2005/08/22
 第11号 2005/09/10
 第12号 2005/09/13
 第13号 2005/09/28
 第14号 2005/11/04
 第15号 2005/12/25
 第16号 2006/04/19
 第17号 2006/04/26

<EXCEL>
 1.ピボットテーブル
 2.ピボットテーブルのエラー対処方法

当サイトの情報をご利用になる場合は、全て自己責任でお願いします
第9号 2005/08/18
<MySQL編 第5回目>


 今回は、SELECT文のリレーション機能を紹介します。


リレーション機能は、例えば、製品の[売上データ]が“数字コード”と“金額”
しかデータとして持っていなかったときに、他の“数字コード”と“製品名称”
のテーブルを利用して“製品名称”の欄を追加できる機能です。

リレーション機能はAccessにもありますし、Excelではvlookup関数を使用すれば
できます。
リレーション機能には、“1対多”と“1対1”の2種類があります。
先程の例で説明しますと、[売上データ]をA、読み替える情報が入ったテーブル
をBとすると、Aに対してBの“製品名称”を付加する場合に、もし付加できな
いもの(該当しないもの)が有った場合に、空欄にするのが“1対多”で、空欄に
せずにAの該当しないデータを除外してBと一致する物だけを表示するのが
“1対1”です。(結果として表示しないだけで、もとのAのデータを削除する
わけではありません)

“1対多”はLEFT JOIN 、“1対1”はINNER JOIN を使用します。


SELECT (テーブル名.フィールド名),(テーブル名.フィールド名),,,
FROM (テーブル名)  ←上の例ではA
LEFT(またはINNER) JOIN (テーブル名)  ←上の例ではB
ON (A.フィールド名)=(B.フィールド名) AND (A.フィールド名)=(B.フィールド名) ・・・
WHERE (検索条件)
ORDER BY (テーブル名.フィールド名) 並び順,(テーブル名.フィールド名) 並び順,,,

で、検索条件とソートの入力方法は、メルマガのバックナンバーを見ていただく
として、(ただし、フィールド名の前にテーブル名が必要です。)

ON の行について説明します。
ON の行には、リレーションに必要な両方のテーブルの共通のキーを指示します。
普通は、キーの数は1つであることが多いですが、複数も可能です。

なお、“1対多”と“1対1”のどちらにおいても、テーブルBは同じ(重複した)
共通のキーを持ったデータ存在してはダメです。(テーブルBは共通のキーが主キー
になっているのが望ましいのですが、主キーでなくても重複データがなければリレー
ションは問題有りません。)


<例>

テーブルAがuriageという名前で

ymd  ←年月日
tiku  ←地区コード
kingaku  ←金額

の3つのフィールドを、テーブルBがtiku_mastという名前で

tikucode  ←地区コード
tikumei  ←地区名

の2つのフィールドを持っていた場合に、テーブルAに地区名を付加して表示する
SELECT文は

SELECT uriage.ymd, uriage.tiku, tiku_mast.tikumei, uriage.kingaku
FROM uriage
LEFT JOIN tiku_mast
ON uriage.tiku = tiku_mast.tikucode
WHERE uriage.ymd>='20050401'
ORDER BY uriage.ymd, uriage.tiku


です。


************************************************************************
<編集後記>

MySQLやOracle、Microsoft SQL server,Access等の、現在主流のデータベースサー
バーの正確な種類名はリレーショナルデータベースです。
その名前の通りリレーション機能が最も特徴的な機能です。
リレーションの速度が遅い場合は、共通のキーにインデックスの設定をする等の
工夫をすれば早くなる可能性があります。

次回は、テーブルをつなげるUNION(ユニオン)機能を紹介させて頂きます。

************************************************************************
Copyright©2004 Sing-Ken-Ken.com All Right Reserved. info@sing-ken-ken.com