MYSQLの OUTERJOIN
OUTER JOIN
■何ができる
左と右があるが、右だけ覚えよう
外部結合ができる..一致しないデータもとってこれる。
※ここを理解すると、集計結果が正しくとれるようになる。
内部結合は一致しているものだけ
■LEFTとRIGHTがある
LEFTだけ覚えておけばよい!(反転させるだけなので)
LEFTとRIGHTがあり、外部結合のことをさしています。
どっちが基準なのか?を意識すると良い
■内容
■SQLiteの場合
SQLite の場合は左外部結合を行う LEFT OUTER JOIN 句のみ
LEFT OUTER JOIN
右を覚えず、左だけ覚えておけば大丈夫。
■構文(左
SELECT テーブル名.カラム名, ... FROM テーブル名1 LEFT OUTER JOIN テーブル名2 ON テーブル名1.カラム名1 = テーブル名2.カラム名2; |
テーブル2が基準。
結合すると、基準となるuserテーブルのデータは、全部取得できています。
■事例
SELECT user_t.id, user_t.name, department_t.name FROM user_t LEFT OUTER JOIN department_t ON user_t.department_id = department_t.id; |
「user_t」テーブルを基準として結合をする。
FROMの後ろに書いてあるテーブルの、全行取ってくる。
※右は覚えなくてよい。
あるんだな~~でよい。
RIGHT OUTER JOIN
先ほどと、基準となるテーブルが逆になります。
■構文(右
SELECT user.id, user.name, department_t.name FROM user_t RIGHT OUTER JOIN department_t ON user_t.department_id = department_t.id; |
右側の部署マスタのテーブルが基準になっています。
結合すると...なんか変な状態です^^;
つまり、基準となるテーブルがどこになるか?を意識して書くとよい。
■つまり
SELECT (取得するカラム) FROM テーブル名1 RIGHT OUTER JOIN テーブル名2 ON (結合条件); |
こんな感じになっています。
まとめ
インナージョインをすると、一致した結果のみになります。
アウタージョインを使うと、特定のテーブルにある、レコードを全件取得ことなどができます。
図にまとめると、こんな感じになります。
会社名は一つだが、塾の名前は複数ある場合など、テーブルにOUTER JOINを使いましょう。
複合主キーの設定
Foreign key constraint for table 'school_t', record 'makio-1' would lead to a duplicate entry in table 'room_t', key 'PRIMARY'
UPDATE `school_t` SET `company_id` = '1', `school_id` = 'makio', `room_id` = 'makio_konosu' WHERE `school_id` = 'makio'
Filename: C:/xampp/htdocs/rakutano_zyuku/system/database/DB_driver.php
■分かった事
insert文は主キーがなければ、上書きしてくれる
主キーの場合は、上書きができない。(できてしまうと色々と困るので)
MYSQLの学習
DBに格納、取り出しをしてくれる部分。データの型を決めるところがまずハマル。この順番で学習できます。
■ 基本編 ■
■基本操作■
データを追加する(INSERT)
更新する (UPDATE)
削除について(DALETE)
CURDについて
■基本の操作02■
NOT NULL設定
ビューとは何か?
アップデートについて
■ 設計について■
正規化をしよう
UMLとは何か?
ER図を覚えよう
■アンチパターン
論理削除
ジェイウォーク(交差テーブルを作らない)
1文字エイリアス
全部小文字
複数列属性(マルチカラムアトリビュート)
パスワード
フラグの闇