FC2ブログ

SQLite での複数テーブルの取り扱い

#16 複数のテーブルを扱ってみよう
http://dotinstall.com/lessons/basic_sqlite/6416
を参考に
複数のテーブルからデータを抽出、集計する方法について学習

まずは、必要なテーブルなどを作成
create table games(user_id,score);
create table player(id integer primary key autoincrement,name,team);

次に
insert into player(name,team) values('taguchi','A');
insert into player(name,team) values('sasaki','B');
insert into player(name,team) values('himura','B');
insert into player(name,team) values('yoshino','B');
でデータ入力

確認は
select * from player;

次に、ゲームデータも挿入しておく
insert into games(user_id,score) values(1,200);
insert into games(user_id,score) values(1,300);
insert into games(user_id,score) values(1,20);
insert into games(user_id,score) values(1,220);
insert into games(user_id,score) values(1,120);
insert into games(user_id,score) values(2,50);
insert into games(user_id,score) values(2,40);
insert into games(user_id,score) values(3,40);
insert into games(user_id,score) values(3,120);
insert into games(user_id,score) values(3,140);
insert into games(user_id,score) values(4,140);
insert into games(user_id,score) values(4,10);
insert into games(user_id,score) values(4,100);

最後に、select * from games;
で内容を確認

これで準備OK

これで、ユーザごとに合計点数を集計する

複数テーブルにまたがる場合

select id, name, team, sum(score) from player, games where player.id = games.user_id group by player.id;
というように実行する

構文としては
select 選択するカラム名を,で区切って複数指定
from テーブル名を,で区切って複数指定
where 検索条件
というかんじになる


複数テーブルにまたがるときには
まずカラム名を指定するけど
重複する場合は
テーブル名.カラム名というように書いて指定する

今回の場合なら
games.user_id
とか
games.name
というように、
テーブル名とカラムを . でつなげて書く

そして、今回の where の条件は
player テーブルのid

games テーブルの user_id
が同じものを集計したいので

where
player.id = games.user_id

今回は user_id で集計をしたいので
group by player.id;
となる
group by は ~でという意味


select id, name, team, sum(score) from player, games where player.id = games.user_id group by player.id;

実行結果は

1|taguchi|A|860
2|sasaki|B|90
3|himura|B|300
4|yoshino|B|250

となる
これは、player のIDが人の番号で
games の user_id も人の番号となっているんで
連携しているので簡単に集計ができている
スポンサーサイト



テーマ : Linux
ジャンル : コンピュータ

コメント

非公開コメント

最新記事
検索フォーム
GREEハコニワ攻略サイト
リンク
カテゴリ
月別アーカイブ
フリーエリア
最新記事
FXプライムレート
最新コメント
最新トラックバック