「php05-2」の編集履歴(バックアップ)一覧はこちら

php05-2」(2012/01/23 (月) 18:30:35) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

[[トップページヘ>http://www34.atwiki.jp/ninja22/pages/21.html]] *(8)-3 おさらい練習問題2 ・下記にサンプルデータを記す。これを用いて集計等を行った。 #region(close,←クリックで開く) create table tb ( id int(11) not null auto_increment, bang varchar(50) not null, uria int, tuki int, primary key (id) ); insert into tb (bang, uria, tuki) values ('A103', 101, 4); insert into tb (bang, uria, tuki) values ('A102', 54, 5); insert into tb (bang, uria, tuki) values ('A104', 181, 4); insert into tb (bang, uria, tuki) values ('A101', 184, 4); insert into tb (bang, uria, tuki) values ('A103', 17, 5); insert into tb (bang, uria, tuki) values ('A101', 300, 5); insert into tb (bang, uria, tuki) values ('A102', 205, 6); insert into tb (bang, uria, tuki) values ('A104', 93, 5); insert into tb (bang, uria, tuki) values ('A103', 12, 6); insert into tb (bang, uria, tuki) values ('A107', 87, 6); create table tb1 ( id int(11) not null auto_increment, bang varchar(50) not null, nama varchar(50) not null, tosi int, primary key (id) ); insert into tb1 (bang, nama, tosi) values ('A101', '佐藤', 40); insert into tb1 (bang, nama, tosi) values ('A102', '高橋', 28); insert into tb1 (bang, nama, tosi) values ('A103', '中川', 20); insert into tb1 (bang, nama, tosi) values ('A104', '渡辺', 23); insert into tb1 (bang, nama, tosi) values ('A105', '西沢', 35); create table tb3 ( id int(11) not null auto_increment, bang varchar(50) not null, ken varchar(50) not null, primary key (id) ); insert into tb3 (bang, ken) values ('A101', '東京都'); insert into tb3 (bang, ken) values ('A102', '埼玉県'); insert into tb3 (bang, ken) values ('A103', '神奈川県'); insert into tb3 (bang, ken) values ('A104', '北海道'); insert into tb3 (bang, ken) values ('A105', '静岡県'); #endregion 【tb】 |BGCOLOR(#e4ccff):&bold(){id}|BGCOLOR(#e4ccff):&bold(){bang}|BGCOLOR(#e4ccff):&bold(){uria}|BGCOLOR(#e4ccff):&bold(){tuki}| |1|A103|101|4| |2|A102|54|5| |3|A104|181|4| |4|A101|184|4| |5|A103|17|5| |6|A101|300|5| |7|A102|205|6| |8|A104|93|5| |9|A103|12|6| |10|A107|87|6| 【tb1】 |BGCOLOR(#e4ccff):&bold(){id}|BGCOLOR(#e4ccff):&bold(){bang}|BGCOLOR(#e4ccff):&bold(){nama}|BGCOLOR(#e4ccff):&bold(){tosi}| |1|A101|佐藤|40| |2|A102|高橋|28| |3|A103|中川|20| |4|A104|渡辺|23| |5|A105|西沢|35| 【tb3】 |BGCOLOR(#e4ccff):&bold(){id}|BGCOLOR(#e4ccff):&bold(){bang}|BGCOLOR(#e4ccff):&bold(){ken}| |1|A101|東京都| |2|A102|埼玉県| |3|A103|神奈川県| |4|A104|北海道| |5|A105|静岡県| ・&bold(){複数テーブルのレコードを合わせて表示する} select カラム名 from テーブル名 union select カラム名2 from テーブル名2; ・表示例1 select * from tb1 union select * from tb2; ・表示例2(わかりやすく括弧でくくった) (select * from tb1) union (select * from tb2); ・表示例3(たくさん) (select * from tb1) union (select * from tb2) union (select * from tb3); ・&bold(){条件をつけて複数テーブルのレコードを合わせて表示する}(重複省略処理含む) (select bang from tb where uria>=200) union (select bang from tb1 where tosi>=35); ・&bold(){複数の抽出結果を合わせて表示}(重複あり) (select bang from tb where uria>=200) union all (select bang from tb1 where tosi>=35); ・&bold(){複数のテーブルを結合し表示}(内部結合) ・・複数のテーブルをキーで結合し表示 select カラム名 from テーブル1 join 結合するテーブル2 on テーブル1のカラム=テーブル2のカラム; ・&bold(){(tbとtb1のカラム「bang」が一致するレコードを結合し表示)} ・・※join = innner join select * from tb join tb1 on tb.bang=tb1.bang ↓ ・&bold(){usingを使って見やすくする}:using(キーとなるカラム名/共通) select * from tb join tb1 using(bang); ・&bold(){合わせて表示例1} select tb.bang, tb1.nama, tb.uria from tb join tb1 using (bang); ・&bold(){合わせて表示例2} select tb.bang as '社員番号', tb1.nama as '氏名', tb.uria as '売上' from tb join tb1 using(bang) where tb.uria>=100; 結果 |社員番号|氏名|売上| |A103|中川|101| |A104|渡辺|181| |A101|佐藤|184| |A101|佐藤|300| |A102|高橋|205| ・&bold(){合わせて表示(たくさん)} select tb.bang, tb.uria, tb1.nama, tb3.ken from tb join tb1 using(bang) join tb3 using(bang); 結果 |bang|uria|nama|ken| |A103|101|中川|神奈川県| |A102|54|高橋|埼玉県| |A104|181|渡辺|北海道| |A101|184|佐藤|東京都| |A103|17|中川|神奈川県| |A101|300|佐藤|東京都| |A102|205|高橋|埼玉県| |A104|93|渡辺|北海道| |A103|12|中川|神奈川県| ※ XAMPP 1.7.7 [PHP: 5.3.8] での設定項目です。 ---- #center(){[[前のページ>php03]] < | > [[次のページ>php05]]} #center(){◆ ◆ ◆} ----
[[トップページヘ>http://www34.atwiki.jp/ninja22/pages/21.html]] *(8)-3 おさらい練習問題2 ・下記にサンプルデータを記す。これを用いて集計等を行った。 #region(close,←クリックで開く) create table tb ( id int(11) not null auto_increment, bang varchar(50) not null, uria int, tuki int, primary key (id) ); insert into tb (bang, uria, tuki) values ('A103', 101, 4); insert into tb (bang, uria, tuki) values ('A102', 54, 5); insert into tb (bang, uria, tuki) values ('A104', 181, 4); insert into tb (bang, uria, tuki) values ('A101', 184, 4); insert into tb (bang, uria, tuki) values ('A103', 17, 5); insert into tb (bang, uria, tuki) values ('A101', 300, 5); insert into tb (bang, uria, tuki) values ('A102', 205, 6); insert into tb (bang, uria, tuki) values ('A104', 93, 5); insert into tb (bang, uria, tuki) values ('A103', 12, 6); insert into tb (bang, uria, tuki) values ('A107', 87, 6); create table tb1 ( id int(11) not null auto_increment, bang varchar(50) not null, nama varchar(50) not null, tosi int, primary key (id) ); insert into tb1 (bang, nama, tosi) values ('A101', '佐藤', 40); insert into tb1 (bang, nama, tosi) values ('A102', '高橋', 28); insert into tb1 (bang, nama, tosi) values ('A103', '中川', 20); insert into tb1 (bang, nama, tosi) values ('A104', '渡辺', 23); insert into tb1 (bang, nama, tosi) values ('A105', '西沢', 35); create table tb3 ( id int(11) not null auto_increment, bang varchar(50) not null, ken varchar(50) not null, primary key (id) ); insert into tb3 (bang, ken) values ('A101', '東京都'); insert into tb3 (bang, ken) values ('A102', '埼玉県'); insert into tb3 (bang, ken) values ('A103', '神奈川県'); insert into tb3 (bang, ken) values ('A104', '北海道'); insert into tb3 (bang, ken) values ('A105', '静岡県'); #endregion 【tb】 |BGCOLOR(#e4ccff):&bold(){id}|BGCOLOR(#e4ccff):&bold(){bang}|BGCOLOR(#e4ccff):&bold(){uria}|BGCOLOR(#e4ccff):&bold(){tuki}| |1|A103|101|4| |2|A102|54|5| |3|A104|181|4| |4|A101|184|4| |5|A103|17|5| |6|A101|300|5| |7|A102|205|6| |8|A104|93|5| |9|A103|12|6| |10|A107|87|6| 【tb1】 |BGCOLOR(#e4ccff):&bold(){id}|BGCOLOR(#e4ccff):&bold(){bang}|BGCOLOR(#e4ccff):&bold(){nama}|BGCOLOR(#e4ccff):&bold(){tosi}| |1|A101|佐藤|40| |2|A102|高橋|28| |3|A103|中川|20| |4|A104|渡辺|23| |5|A105|西沢|35| 【tb3】 |BGCOLOR(#e4ccff):&bold(){id}|BGCOLOR(#e4ccff):&bold(){bang}|BGCOLOR(#e4ccff):&bold(){ken}| |1|A101|東京都| |2|A102|埼玉県| |3|A103|神奈川県| |4|A104|北海道| |5|A105|静岡県| ・&bold(){複数テーブルのレコードを合わせて表示する} select カラム名 from テーブル名 union select カラム名2 from テーブル名2; ・表示例1 select * from tb1 union select * from tb2; ・表示例2(わかりやすく括弧でくくった) (select * from tb1) union (select * from tb2); ・表示例3(たくさん) (select * from tb1) union (select * from tb2) union (select * from tb3); ・&bold(){条件をつけて複数テーブルのレコードを合わせて表示する}(重複省略処理含む) (select bang from tb where uria>=200) union (select bang from tb1 where tosi>=35); ・&bold(){複数の抽出結果を合わせて表示}(重複あり) (select bang from tb where uria>=200) union all (select bang from tb1 where tosi>=35); ・&bold(){複数のテーブルを結合し表示}(内部結合) ・・複数のテーブルをキーで結合し表示 select カラム名 from テーブル1 join 結合するテーブル2 on テーブル1のカラム=テーブル2のカラム; ・&bold(){(tbとtb1のカラム「bang」が一致するレコードを結合し表示)} ・・※join = innner join select * from tb join tb1 on tb.bang=tb1.bang ↓ ・&bold(){usingを使って見やすくする}:using(キーとなるカラム名/共通) select * from tb join tb1 using(bang); ・&bold(){合わせて表示例1} select tb.bang, tb1.nama, tb.uria from tb join tb1 using (bang); ・&bold(){合わせて表示例2} select tb.bang as '社員番号', tb1.nama as '氏名', tb.uria as '売上' from tb join tb1 using(bang) where tb.uria>=100; 結果 |社員番号|氏名|売上| |A103|中川|101| |A104|渡辺|181| |A101|佐藤|184| |A101|佐藤|300| |A102|高橋|205| ・&bold(){合わせて表示(たくさん)} select tb.bang, tb.uria, tb1.nama, tb3.ken from tb join tb1 using(bang) join tb3 using(bang); 結果 |bang|uria|nama|ken| |A103|101|中川|神奈川県| |A102|54|高橋|埼玉県| |A104|181|渡辺|北海道| |A101|184|佐藤|東京都| |A103|17|中川|神奈川県| |A101|300|佐藤|東京都| |A102|205|高橋|埼玉県| |A104|93|渡辺|北海道| |A103|12|中川|神奈川県| ・&bold(){複数のテーブルを結合し表示}(外部結合) ・(1) 左外部結合:left join ・・tb1(右)のbang項目をtb(左)のbang項目に結合し表示 ・・※right join = right outer join select tb.bang, tb1.nama from tb left join tb1 using(bang); 結果 |bang|nama| |A103|中川| |A102|高橋| |A104|渡辺| |A101|佐藤| |A103|中川| |A101|佐藤| |A102|高橋| |A104|渡辺| |A103|中川| |A107|NULL| ・(2) 右外部結合:right join ・・tb(左)のbang項目をtb1(右)のbang項目に結合し表示 ・・※left join = left outer join select tb.bang, tb1.nama from tb right join tb1 using(bang); 結果 |bang|nama| |A101|佐藤| |A101|佐藤| |A102|高橋| |A102|高橋| |A103|中川| |A103|中川| |A103|中川| |A104|渡辺| |A104|渡辺| |NULL|西沢| ※ XAMPP 1.7.7 [PHP: 5.3.8] での設定項目です。 ---- #center(){[[前のページ>php03]] < | > [[次のページ>php05]]} #center(){◆ ◆ ◆} ----

表示オプション

横に並べて表示:
変化行の前後のみ表示: