我有这个数据库结构:
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>
有什么想法吗?
答案 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
。