sql 字符列比较,表连接问题 20

数据库是sql2000有两张表T1(id(int),name(varchar(100))),T2(id(int),idstr(varchar(100)))表中内容T1id... 数据库是sql2000

有两张表
T1(id(int),name(varchar(100))),
T2(id(int),idstr(varchar(100)))

表中内容T1
id name
1 chn
2 usa
3 eng

T2表中内容
id idstr
1 2,3
2 1,2,3

现在,要将T1和T2连接起来,结果如下:
idstr name
2,3 usa eng
1,2,3 chn usa eng

请问sql语句怎么实现?
我尝试过
select T2.idstr,T1.name from T2
left join T1
on t1.id in (t2.idstr)不对

select T2.idstr,T1.name from T2
left join T1
on t1.id like t2.idstr 也不对
谢谢一楼,如果用函数或者存储过程是可以实现,只是我觉得太麻烦想找一个更简单点的方法,现在我修改了一下语句,可以一条一条的查询出来,还是没有办法把idstr中所关联到的name连接起来作为一个字段显示出来,现我的语句如下:
select T2.idstr,T1.name from T2
left join T1
on T2.idstr like '%'+cast(T1.id as varchar(100))+'%'
这样可以得到5条记录,而不是我所希望的三条,不知哪位大侠还有更简便的方法?
展开
 我来答
liaoxw624
2008-08-18 · 超过26用户采纳过TA的回答
知道答主
回答量:51
采纳率:0%
帮助的人:73万
展开全部
按照你的要求来说,是没有办法简单用join来完成的
因为列选择T1.name这个射影操作就限制了,
不管怎么交叉,你只可能在一行里面选出一个name值
没法将两个name放到一条记录里面去

我觉得只能用游标。
首先循环T2,找出里面的没一个idstr,并用string函数将其中的每个id
给取出来。
然后,用其中的id去T1表中找到相对应的name。
再将这些name用string函数拼成一个string值。

个人建议。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Scorpio_jiayin
2008-08-19 · TA获得超过309个赞
知道小有建树答主
回答量:156
采纳率:0%
帮助的人:130万
展开全部
要真的达到你的要求比较难,建议你先写一个存储过程来完成将“1,2,3”转化为“1”,“2”,“3”,这样会更加方便点。或者你运用一下临时表
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式