按标题总和数据分组

时间:2013-11-07 15:50:54

标签: mysql sql join

我有两张表,如下面

表1:的

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

表2:的 EXP

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 。我需要他的输出,如下所示。 view = user_id 101的视图总数(表示camp_id 1),用于标题abc。同样检查是每个标题下的支票总和,费用是每个标题下的费用总和。

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

显示错误。如果有些更改然后显示所有标题但查看检查成本相同的每个油炸。

请帮忙

1 个答案:

答案 0 :(得分:0)

我相信以下是你所追求的。您需要正确地将两个表连接在一起。此外,您只能在同一查询中使用一次别名。您不止一次引用了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