首页 新闻 会员 周边 捐助

纠结的分割截取

0
悬赏园豆:15 [已解决问题] 解决于 2010-10-29 16:35
yling的主页 yling | 初学一级 | 园豆:155
提问于:2010-10-26 10:36
< >
分享
最佳答案
0

能不能再把你的要求表达清楚?

收获园豆:10
天神一 | 小虾三级 |园豆:845 | 2010-10-26 13:13
楼主的意思是根据a表 来统计b表中的数据比如: a表cid=1的,那么就在B表中统计父亲,儿子,如果a表cid=2的,那么就在B表中统计儿子,配偶
like%'远远'% | 园豆:635 (小虾三级) | 2010-10-26 14:17
使用存储过程一定能搞定 CREATE PROCEDURE SName @ID INT AS DECLARE @Family NVARCHAR(255) SELECT @Family=Family FROM A WHERE ID=@ID SET @Family=REPLACE('''+@Family+''',',','','') EXEC('SELECT * FROM B WHERE name IN ('+@Family+')') GO 以上方法一定可以,可能有语法错误,请修改之后即可使用,你可以修改,就是这个方法
天神一 | 园豆:845 (小虾三级) | 2010-10-26 19:23
@ like%'远远'% 同学: 之前可能我描述有问题, 我的意思不是哪个样子的,我是要统计父亲总数,母亲总数这些,但是我不想分成五条sql,我想一个sql查出所有,所以我想到的只有关联查,所以比较的焦虑...呵呵
yling | 园豆:155 (初学一级) | 2010-10-29 11:11
你越说越不懂了,我的存储过程也不用写五个SQL语句呀,一条数据就可以了
天神一 | 园豆:845 (小虾三级) | 2010-10-29 13:29
呵呵 我吧问题换了,你看嘛
yling | 园豆:155 (初学一级) | 2010-10-29 15:10
其他回答(4)
0

不太明白你说的意思

断肠人在天涯 | 园豆:225 (菜鸟二级) | 2010-10-26 11:21
0

建议用C#代码写,sql有的难搞,一下仅提供思路:

1.查询a表的family值,然后分割填充到集合,如:list

2.对list循环,用每个值作为条件去统计B表中的basename

收获园豆:10
like%'远远'% | 园豆:635 (小虾三级) | 2010-10-26 11:48
这个问题解决了,那你的问题就解决了 比如a表的cid=1是,你能否将 famliy转换成多行 或者 like 后面加字段名,但是我试过貌似不行, 这是我写的 select a.name,(select count(name) from b where name=a.name) as '统计' from a where cid=1
支持(0) 反对(0) like%'远远'% | 园豆:635 (小虾三级) | 2010-10-26 14:23
如果你能将上面的 from a where cid=1 转换成多行的datatable,那么这句话就能实现你所想要的
支持(0) 反对(0) like%'远远'% | 园豆:635 (小虾三级) | 2010-10-26 14:33
已近解决了,lz看下这段代码行吗? select [name],(select COUNT(0) from b where [name]=c.[name]) as 'Count' from (select distinct [name] from a join b on a.famliy like '%'+b.name+'%' where a.cid=2) c
支持(0) 反对(0) like%'远远'% | 园豆:635 (小虾三级) | 2010-10-26 17:34
只需改变a.cid= 多少,就可以根据a表来动态统计b表中的数据
支持(0) 反对(0) like%'远远'% | 园豆:635 (小虾三级) | 2010-10-26 17:37
0

select count(*) as 父亲的个数 from a where famliy like '%父亲%'

其他的个数同理

收获园豆:10
wang_yb | 园豆:4891 (老鸟四级) | 2010-10-26 12:41
这种方式是不行的,要在另一个表取模糊匹配的字段,但是我这么写好像也不对啊 select a.cid,a.family,b.name from a join b on a.family like '%' + b.name + '%'
支持(0) 反对(0) yling | 园豆:155 (初学一级) | 2010-10-26 13:59
@yling: 下面这样试试呢: select bname,count(1) from (select b.name as bname, a.cid,a.family from b join a where a.family like '%' + b.name + '%') group by bname
支持(0) 反对(0) wang_yb | 园豆:4891 (老鸟四级) | 2010-10-26 14:51
like '%' + b.name + '%' 不行的,我这报错
支持(0) 反对(0) like%'远远'% | 园豆:635 (小虾三级) | 2010-10-26 15:10
@like%'远远'%: 您是什么数据库,有的数据库连接字符串的符号不是“+”,是“||”
支持(0) 反对(0) wang_yb | 园豆:4891 (老鸟四级) | 2010-10-26 15:14
不是的说错了,select b.name as bname, a.cid,a.family from b join a where a.family like '%' + b.name + '%' 这样是查不出数据来的,感觉like '%' + b.name + '%' 无效
支持(0) 反对(0) like%'远远'% | 园豆:635 (小虾三级) | 2010-10-26 17:13
@like%'远远'%: 我在sqlite上运行的可以查出数据啊,sqlite上“+”需要换成“||”
支持(0) 反对(0) wang_yb | 园豆:4891 (老鸟四级) | 2010-10-26 17:25
恩,是可以的,是我的两个关系搞错了我是b表name模糊查询a.famliy字段,所以都为空
支持(0) 反对(0) like%'远远'% | 园豆:635 (小虾三级) | 2010-10-26 17:41
@wang_yb: select b.name as bname, a.cid,a.family from b join a where a.family like '%' + b.name + '%' 这个语句不行啊,我试了,报错,两个表没有关联字段,所以错的,应该是。 后面的where那个条件不得行。
支持(0) 反对(0) yling | 园豆:155 (初学一级) | 2010-10-29 11:48
0

同意楼上的,呵呵。不过like可能效率不高,找找有没有其他的sql函数,来判断一个字段是否在另一个字段中。我知道在mysql里面,LOCATE的效率比like的高点

xuyan & xiaodai | 园豆:210 (菜鸟二级) | 2010-10-26 12:59
有的 Charindex就是判断字符出现的位置,没有返回0
支持(0) 反对(0) like%'远远'% | 园豆:635 (小虾三级) | 2010-10-26 13:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册