2011-01-21 72 views
1

我有亏欠,拥有一批标识符一起金钱的表(可以是1,2,3例如)使用金额和GROUP BY和IFNULL

我还有一个表,它给出一个名称,这些团队的标识符(所以1可以指团队1,2可以指约翰的笑话等)

第一个表可以有多个欠款项目,我需要获得每个团队标识符的总欠款,并使用团队名称(如果存在) 。

所以我离开了连接表并使用sum子句并获得每个团队名称的总数,或者如果团队名不存在,则返回null。如果为null,则我想利用团队标识,所以结果看起来就像

name   total 
..................... 
team1   100 
John's jokers 1000 
99    50 

,其中99是一个团队的标识,因为没有teamname并且有一个空的存在。

我尝试使用ifnull(columnName,teamID),但使用sum子句时失败。

任何人都可以帮助解决这个问题,请

回答

3

我认为IFNULL()这样使用:

select ifnull(teams.team_name, teams.team_id) from teams; 

因此,在这种情况下,尝试检索球队的名称,如果自带返回null而是使用团队的标识符。在这种情况下,您的查询应该是这样的:

select ifnull(teams.team_name, owing.team_id), sum(amount_owed) 
    from owing left join teams on owing.team_id = teams.id 
group by owing.team_id 

确保小组由来自因,而不是团队的ID字段要求,否则你会在一个空场进行分组。

这是否解决了这个问题?

+0

太棒了!这已经解决了它的一种享受!我想我是在队伍身份上分组。非常感谢您的帮助。 – Dave 2011-01-21 16:22:08