1

以下のような2つのテーブルがあります

表 1:キャンプ

id --- user_id -- title
1 ----- 101 ----- abc
2 ----- 107 ----- xyz
3 ----- 111 ----- xmp
4 ----- 101 ----- pop
5 ----- 101 ----- xza
6 ----- 107 ----- xvc

table2:指数

id --- camp_id ---- view --- check --- cost
1 ------ 1 -------- 5 ------- 2 ------ 3
2 ------ 1 -------- 10 ------ 3 ------ 6
3 ------ 1 -------- 15 ------ 4 ------ 3
4 ------ 3 -------- 7 ------- 2 ------ 2
5 ------ 4 -------- 9 ------- 1 ------ 1
6 ------ 4 -------- 8 ------- 1 ------ 2
7 ------ 6 -------- 7 ------- 2 ------ 2
8 ------ 5 -------- 9 ------- 1 ------ 1
9 ------ 5 -------- 9 ------- 3 ------ 5

user_id 101が記録されたとします。以下のような彼の出力が必要です。ビュー = タイトル abc の user_id 101 (camp_id 1 を意味する) ごとのビューの合計。同様に、チェックは各タイトルのチェックの合計、コストは各タイトルのコストの合計です。

title---view---check---cost
abc ---- 30 --- 9 ----- 12
pop ---- 17 --- 2 ----- 3
xza ---- 18 --- 4 ----- 6

私のコード:

SELECT c.title as t,SUM(e.view) as v,SUM(e.check) as ch,SUM(e.cost) as co 
  FROM camp c,exp e WHERE c.user_id='$log_id' AND e.camp_id=c.id 
  GROUP BY t

エラー表示。いくつかの変更があった場合、すべてのタイトルを表示しますが、すべての揚げ物で同じコストをチェックします。

助けてください

4

1 に答える 1

0

以下はあなたが求めているものだと思います。2 つのテーブルを適切に結合する必要がありました。また、エイリアスは同じクエリで 1 回しか使用できません。あなたはc複数回参照しました。

SELECT c.title,
  SUM(e.view) AS viewSum,
  SUM(e.check) AS checkSum,
  SUM(e.cost) AS costSum 
FROM camp AS c 
  INNER JOIN exp AS e 
  ON c.id = e.camp_id
WHERE c.user_id = 101
GROUP BY c.title
于 2013-11-07T15:58:41.007 に答える