首页 新闻 会员 周边 捐助

sql逗号隔开查询

1
悬赏园豆:50 [已解决问题] 解决于 2013-10-23 11:38

证书表 人员表

 

想得到查到的数据为 用SQL查询出来

sql
cnns的主页 cnns | 初学一级 | 园豆:1
提问于:2013-10-23 10:35
< >
分享
最佳答案
0
--基础表1
CREATE TABLE #t1(id INT,NAME VARCHAR(50))
INSERT INTO #t1
SELECT 1,'低级'
UNION
SELECT 2,'中级'
UNION 
SELECT 3,'高级'

CREATE TABLE #t2(NAME VARCHAR(50),title VARCHAR(50))
--基础表2
INSERT INTO #t2
SELECT 'z','1,2'
UNION
SELECT 'w','2,3'
UNION
SELECT 'a','1,2,3'
UNION
SELECT 'b','1,2,3'

--出结果
SELECT #t1.name,COUNT(#t2.NAME) FROM #t1 LEFT join #t2
ON ','+#t2.title+',' LIKE '%,'+CONVERT(VARCHAR(50),#t1.id)+',%' 
group BY #t1.NAME
收获园豆:50
幻天芒 | 高人七级 |园豆:37207 | 2013-10-23 11:28

谢谢 就是这个意思

cnns | 园豆:1 (初学一级) | 2013-10-23 11:38

@cnns: 这个效率不怎么高,呵呵~你看着用吧。

幻天芒 | 园豆:37207 (高人七级) | 2013-10-23 11:45
其他回答(2)
0

证书表与人员表 多设计一张关联表 好点吧

Yu | 园豆:12990 (专家六级) | 2013-10-23 10:49

证书表和人员表就是关联的 添加人员的时候 证书是多选 以逗号隔开插入进去的 人员表的TechincalTitle就是关联字段

支持(0) 反对(0) cnns | 园豆:1 (初学一级) | 2013-10-23 10:55

@cnns: 如果按照这样的思路的话,可以考虑是用Contain关键字

支持(0) 反对(0) 平常心队长 | 园豆:1113 (小虾三级) | 2013-10-23 10:59

@cnns: 这是逻辑上的关联,实际上在表的设计上 没有体现出来

支持(0) 反对(0) Yu | 园豆:12990 (专家六级) | 2013-10-23 11:10
0

这样设计不是很合理的.最好是再添加第三张表,专门存储证书和人员的关联.是个一对多的关系

平常心队长 | 园豆:1113 (小虾三级) | 2013-10-23 10:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册