こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

SQLでできること

SQLだけでできることと、できないことって、一言で言い表せるでしょうか?
データベースからデータを取り出すとき、どこまでできて、どこからはphpなど他の言語で処理したらいいのか、とても気になるんです。
もしかして、何でもできるのかな?

というのも、今やりたいと思っていることが、
(環境はMySQL+PHP使用で、ブラウザで表示させます)

テーブル A(人物のリスト)
id|name
-------
1 | aaa
2 | bbb
3 | ccc
4 | ddd

テーブル B(人物と成績のリスト)
name| point
-------------
aaa | 10
bbb | 15
bbb | 10
aaa | 20
bbb | 25
ccc | 30

のようなテーブルがあったとき、
aaaのpointの合計 = 30
bbbのpointの合計 = 50
cccのpointの合計 = 30
dddのpointの合計 = 0 ← テーブルBに載ってない人もいる

という人物全員の結果の集計をするには、どうすると最適でしょう?
私がすぐ思いつくのは、テーブルAのデータを配列に読み込んで、それを元に次はテーブルBから、人物別の行を取り出すSQL文を作って、pointを集計するという手順です。他に手段はあるでしょうか?

投稿日時 - 2004-11-17 11:08:27

QNo.1088143

困ってます

質問者が選んだベストアンサー

私ならほとんど全部SQLで済ませてしまうかな・・・
外部結合使えば一発だし。
たとえばこんな感じで。

SELECT
テーブルA.name,
SUM(テーブルB.point) AS point_sum
FROM
テーブルA LEFT JOIN テーブルB ON テーブルA.name = テーブルB.name
GROUP BY
テーブルA.name

この結果、
name | point_sum
------------------
aaa | 30
bbb | 50
ccc | 30
ddd | NULL

dddはNULLになるので、これはphp側で0を表示するようにする。
(SQLでも書けるけど、これはphpで書いたほうが早いような)

こんなところでしょうか。
ご参考になれば。。。

投稿日時 - 2004-11-17 11:51:29

お礼

ありがとうございます!
スバラシイです。
こういうのを分かるようになりたいです。
”JOIN”など、使ったことないです。
できるとわかっただけでも、やる気がでました。
やっぱり SQLだけで いろんなことができるんですね。
勉強します!

投稿日時 - 2004-11-17 22:51:59

ANo.1

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問