test1表如下:
test2表如下:
test3表如下:
逻辑是
test1表的t1 和 test2表的t1_id是关联的;
如果test2 的表相同t1_id超过5个的话 就会分组;
最后统一生成test3表;
也就是说test3表是根据test1 和 test2生成出来的。
test3的t3 是test2中分组后t4的和
test2表如下:
test3表如下:
逻辑是
test1表的t1 和 test2表的t1_id是关联的;
如果test2 的表相同t1_id超过5个的话 就会分组;
最后统一生成test3表;
也就是说test3表是根据test1 和 test2生成出来的。
test3的t3 是test2中分组后t4的和
参考一下这个贴子的提问方式http://bbs.csdn.net/topics/320211382
1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
FROM test1 a, (
SELECT a.id, SUM(b.t4) as t3
FROM test1 a, test2 b
WHERE a.id = b.t1_id
GROUP BY a.id HAVING COUNT(*) > 5 -- 超过 5 个,如果包含 5 个,用 >=,对应的,下面的 HAVING 改为 <
)b WHERE a.id = b.id
UNION ALL
SELECT a.id, a.t1, a.t2, b.t4 as t3
FROM test1 a, test2 b
WHERE a.id = b.t1_id
AND a.id NOT IN( SELECT t1_id FROM test2 GROUP BY t1_id HAVING COUNT(*) <= 5)