表A 表B
id value id value
20120101 120 20120101 10
20120201 100 20120304 5
20120301 90 20120401 6
20120401 72 20120501 7
20120501 45 20120601 16
20120601 75 20120701 80
20120701 60 20120901 15
两个表。 id 相同 value 相加 并按id 循环输出。怎么写。真心求助啊!
select id , sum(value)
(
select * from A
union all
select * from B
) t
group by id;
如果上面的 两个表 是我sql 语句检索出的两条记录呢。需要按相同id的项相加 不相同的不加。 并按id 循环输出
不懂你的意思,上面的语句试过了吗。
嗯 这样写 是可以的。 但我现在是执行两条sql 语句 取得上面的值 ,然后循环输出。 按id 倒叙 导致相加对应不上。用的是while 循环 。
while($date=mysql_fetch_array($sql)){
$aa=mysql_fetch_array($query)
$bb=mysql_fetch_array($querys)
echo $aa[1]+$bb[1];
}这样输出的话 因为我$query $querys 语句是按时间倒叙,当第二个结果集多数据或第一个少数据的话就导致对应不上。只是按倒叙相加 就不准确了。 想解决这个。
为什么要取两次,用我哪个sql不就可以了。
两表链接,用子查询
1.左连接
2.字段相加
3.having查询
你的两条sql,可否写成一条,同时返回结果集。
select sum(A.value+B.value),A.value,B.value
from A left join B on A.id=B.id group by A.id
你的两条sql,可否写成一条,同时返回结果集。
select sum(A.value+B.value),A.value,B.value
from A left join B on A.id=B.id group by A.id
还有不相同的id也要输出、
select sum(A.value+B.value),A.value,B.value
from A left join B on A.id=B.id group by A.id
你再union all A.B表 试试