关于SQLSERVER数据库连接查询的问题

主表:nationalityInfo

从表:customerInfo

其中customerInfo表的NationalityID为外键引用nationalityInfo表的主键nationalityID

查询每个国家的住店总人数
select nationalityID,count(*) as 住店人数 from customerInfo group by NationalityID
问题是:我要把国籍ID直接显示为国籍名字
select n.nationality,count(*) as 住店人数
from customerInfo as c join nationalityInfo as n on c.NationalityID=n.NationalityID
group by c.NationalityID

这样就是错误的,因为我是按照nationalityID分组的,所以显示nationality就错了,怎样解决呢??

nationality  和  NationalityID 应该是对应的吧


这样行不?


select n.nationality,count(*) as 住店人数 
from customerInfo as c join nationalityInfo as n on c.NationalityID=n.NationalityID 
group by n.nationality

追问

不,得用nationalityid分组,我想到一个方法,就是:select max(n.nationality)..... 不知道这样有没有弊端

追答

关键是看你的  n.nationality  和  NationalityID  是不是一一对应,如果完全对应的话,你可以  


select c.NationalityID,n.nationality,count(*) as 住店人数 
from customerInfo as c join nationalityInfo as n on c.NationalityID=n.NationalityID 
group by c.NationalityID,n.nationality


或者 

select c.NationalityID,max(n.nationality),count(*) as 住店人数 
from customerInfo as c join nationalityInfo as n on c.NationalityID=n.NationalityID 
group by c.NationalityID

都可以的。

追问

好吧,我也觉得这问题挺奇怪。。。

温馨提示:答案为网友推荐,仅供参考
相似回答