
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を集計するという手順です。他に手段はあるでしょうか?
No.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で書いたほうが早いような)
こんなところでしょうか。
ご参考になれば。。。
ありがとうございます!
スバラシイです。
こういうのを分かるようになりたいです。
”JOIN”など、使ったことないです。
できるとわかっただけでも、やる気がでました。
やっぱり SQLだけで いろんなことができるんですね。
勉強します!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
AccessのSQL 部分一致したデー...
-
「テーブルに座って……」という...
-
アクセスのリンクテーブル一覧...
-
外部キーだけのテーブル(主キ...
-
ACCESS テーブルのRENAME
-
ACCESSには NETWORKDAYS関数は...
-
取数計算
-
時給の変更に対応する方法
-
お金持ちのテーブル
-
テーブル名の前のドットの意味
-
[DB設計]多対多の問題点とは
-
会社の飲み会の幹事になり、座...
-
There was some wine left on t...
-
【エクセル】データテーブルの...
-
面接のときテーブルが正面に。...
-
テーブルリンク リンク元を知...
-
vers か a か(フランス語)
-
同じテーブルを結合して前回の...
-
SQLServerのテーブルが使用して...
-
SNMPでスイッチのMACアドレステ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「テーブルに座って……」という...
-
外部キーだけのテーブル(主キ...
-
会社の飲み会の幹事になり、座...
-
L2SWはARPテーブルを持っている?
-
テーブルリンク リンク元を知...
-
飲み会で、座敷orテーブルどち...
-
【エクセル】データテーブルの...
-
下記、問題に対しての解答が以...
-
オーダーの覚え方について
-
男性と2人で飲食店に行きテーブ...
-
論理名とコメント構文(?)について
-
UTF8のテーブルをODBCドライバ...
-
1対1のリレーション(主キー同...
-
お金持ちのテーブル
-
取数計算
-
アクセスのリンクテーブル一覧...
-
まるいテーブル 円い 丸い 漢字...
-
Excelのテーブルでmatch関数の...
-
面接のときテーブルが正面に。...
-
SQL Server management studio ...
おすすめ情報