test1表如下:
test2表如下:
test3表如下:
逻辑是 
test1表的t1 和 test2表的t1_id是关联的;
如果test2 的表相同t1_id超过5个的话 就会分组;
最后统一生成test3表;
也就是说test3表是根据test1 和 test2生成出来的。
test3的t3 是test2中分组后t4的和

解决方案 »

  1.   

       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://bbs.csdn.net/topics/320211382
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
      

  2.   

    SELECT a.id, a.t1, a.t2, b.t3
    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)