如何提取2个mysql数据库内相同表相同相同记录并累加?
有2个结构完全相同但记录不同的数据库A1、A2,如何同时提取这两个数据库相同数据表相同记录,然后相加后输出?
数据库A1,表a1
+----+------+
| id | num |
+----+------+
| 1 | 10 |
+----+------+
数据库A2,表a2
+----+------+
| id | num |
+----+------+
| 1 | 35 |
+----+------+
需要把id相同的值提取并相加后输出结果(45),请问哪位大侠能帮忙?
谢谢!
问题点数:100、回复次数:8Top
1 楼rephael(拉菲尔)回复于 2005-01-24 20:46:18 得分 0
数据库A1,表a1
+----+------+
| id | num |
+----+------+
| 1 | 10 |
+----+------+
数据库A2,表a1
+----+------+
| id | num |
+----+------+
| 1 | 35 |
+----+------+
上面写错了Top
2 楼cloudchen(cloudchen)回复于 2005-01-24 22:07:45 得分 10
select a.num+b.num from A1.a1 a join A2.a1 b on a.id = b.idTop
3 楼rephael(拉菲尔)回复于 2005-01-24 23:23:14 得分 0
选取A1数据库,然后
我的具体表达式是
SELECT
allowed.info_hash,a.seeders+b.seeders,a.leechers+b.leechers,a.completed+b.completed,bname,badded,bsize,bcategory,buser,btop,btj from xbt_files a join A2.xbt_files b USING(info_hash) left join allowed USING(info_hash) LEFT JOIN allowed_ex USING(info_hash) LEFT JOIN xbt_files USING(info_hash)
但只能读取A2个数据库有的记录,而A1的有的A2没有的无法显示
另外,我设置
$row[0] is info_hash
$row[1] is seeders
$row[2] is leechers
$row[3] is completed
$row[4] is bname
$row[5] is badded
$row[6] is bsize
$row[7] is bcategory
$row[8] is buser
$row[9] is btop
$row[10] is btj
但无任何变化,还是从A1里读出,并无累加,怎么办.........Top
4 楼ice_berg16(寻梦的稻草人)回复于 2005-01-25 08:47:11 得分 10
把第一个join 改成left joinTop
5 楼rephael(拉菲尔)回复于 2005-01-25 11:51:25 得分 0
该成left join记录是可以显示,但如果而A1的有的A2没有记录,全部显示为空。我是想把A2有的记录加入A1,如果A2没有该记录或空则显示A1记录。现在变成A1、A2都有的记录正常显示,A1有A2无的记录全显示空。
怎么办?Top
6 楼rephael(拉菲尔)回复于 2005-01-26 22:03:54 得分 0
在加50分,哪位高手能解决这个多库多表关联查询的问题?Top
7 楼ice_berg16(寻梦的稻草人)回复于 2005-01-27 08:27:39 得分 80
SELECT
allowed.info_hash,
a.seeders+IFNULL(b.seeders,0),
a.leechers+IFNULL(b.leechers,0),
a.completed+IFNULL(b.completed,0),
bname,badded,bsize,bcategory,buser,btop,btj
FROM xbt_files a
LEFT JOIN A2.xbt_files b USING(info_hash)
LEFT JOIN allowed USING(info_hash)
LEFT JOIN allowed_ex USING(info_hash)
LEFT JOIN xbt_files USING(info_hash)Top
8 楼rephael(拉菲尔)回复于 2005-01-28 03:07:00 得分 0
感谢寻梦的稻草人的帮助和指导,在你的基础上我改进了一下:
SELECT allowed.info_hash, a.seeders + IFNULL( b.seeders, 0 ) , a.leechers + IFNULL( b.leechers, 0 ) , a.completed + IFNULL( b.completed, 0 ) , bname, badded, bsize, bcategory, buser, btop, btj
FROM allowed
LEFT JOIN xbt_files a
USING ( info_hash )
LEFT JOIN allowed_ex
USING ( info_hash )
LEFT JOIN xbt_files
USING ( info_hash )
LEFT JOIN xbt.xbt_files b
USING ( info_hash )
现在显示正确了,感谢Top




