アプリ版:「スタンプのみでお礼する」機能のリリースについて

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を集計するという手順です。他に手段はあるでしょうか?

A 回答 (1件)

私ならほとんど全部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で書いたほうが早いような)

こんなところでしょうか。
ご参考になれば。。。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/11/17 22:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!