「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(){◆ ◆ ◆}
----