两个表
表 Identitys
ID IName
----------- ---------------
1 歌星
2 影星
3 体育明星
4 模特
5 赛车手
6 画家
表 Star,字段IDS对应表Identitys的ID
SID SName IDS
-------- ---------------- ----------
1 刘德华 1,2
2 林志颖 1,2,5
3 柳岩 4
4 潘晓婷 3,5
5 张亮 4
怎么对Identitys做查询统计,以下是错误的
select i.*,count(s.SID) ICount from Identitys i
left join Star s on 1=1
where charindex(','+convert(nvarchar(20),i.ID)+',', ','+IDS+',')>0
group by i.ID,i.IName
order by i.ID
执行结果,少了一条记录(画家)
ID IName ICount
----------- ----------------------- -----------
1 歌星 2
2 影星 2
3 体育明星 1
4 模特 2
5 赛车手 2
------解决思路----------------------
SELECT T1.ID,T1.IName,COUNT(T2.SID)ICount
FROM Identitys T1
LEFT JOIN Star T2 ON ','+T2.IDS+','LIKE '%,'+CAST(T1.ID AS VARCHAR(10))+',%'
GROUP BY T1.ID,T1.IName
------解决思路----------------------
select ID,iname,COUNT(Star.SID) from Identitys
left join Star on charindex (','+CAST(id as varchar)+',',','+ids+',')>0
group by ID,iname