分组给出了错误的标题

时间:2015-11-04 07:10:18

标签: mysql sql mysqli

我有这个数据库结构:

 id | parent_id |    name    | num_begin | num_changes 
====|===========|============|===========|=============
 1  |     1     | 0001-0001  |    10     |      0      
 2  |     2     | 0001-0002  |    15     |      2      
 3  |     3     | 0001-0003  |    20     |      0      
 4  |     3     | testgroup  |    5      |      1      

用户可以创建组和子组。子组获得parent_id。上表中的testgroup是3的子组。

现在我想选择当前的数字(num_begin - num_changes)。所以我提出了这个问题:

SELECT 
   name,
   ( SUM( num_begin ) - SUM( num_changes ) ) AS num_now
FROM 
   groups
GROUP BY 
   parent_id
ORDER BY 
   id DESC

结果是:

    name    |  num_now
============|===========
 0001-0001  |    10    
 0001-0002  |    13   
 testgroup  |    24  

但我希望得到原始组的名称。因此,testgroup应该是0001-0003

而不是<script> setInterval(function(){ $.ajax({ url :'user_online.php', success: function() { $('.chat-o').load('user_online.php'); } }); },1000); </script>

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

加入父母:

select p.name, 
       sum(c.num_begin) - sum(c.num_changes) as num_now
from groups c
join groups p on c.parent_id = p.id
group by p.id, p.name

加入父母时,您会收到以下结果:

---------------------c-------------------------- | ----------p-------------...
id  parent_id  name       num_begin  num_changes | id  parent_id  name
1   1          0001-0001  10         0           | 1   1          0001-0001
2   2          0001-0002  15         2           | 2   2          0001-0002
3   3          0001-0003  20         0           | 3   3          0001-0003
4   3          testgroup  5          1           | 3   3          0001-0003

不是您按p分组并计算c