表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表 試試