日期:2014-05-17  浏览次数:20434 次

SQL问题求教
做了一个计算机的表tab1
--------------------------------------------
computerid(计算机编号 int ) computerpart(计算机配件 varchar)
1 1,2,3
5 205,100,52
--------------------------------------------  
配件表tab2
--------------------------------------------
partid(计算机配件ID INT\INDEX\KEY\NOT NULL) partname(名称 varchar)
1 philips display
2 two birds keyboard
3 westdata harddisk
--------------------------------------------
现在我想的到计算机1的配件表,于是
我select partname from tab2 where id in (select computerpart from tab1 where id=1)  
语句执行得到的结果如下
select partname from tab2 where id in ('1,2,3')
但提示不能转换INT到varchar.象这种问题该怎么处理?

------解决方案--------------------
select b.partname from tab1 a,tb2 b
 where id=1 and charindex(','+rtrim(b.partid)+',',','+a.computerpart+',')>0
------解决方案--------------------
SQL code

select partname from tab2 where charindex(+','ltrim(id)+',', ','+'1,2,3'+',')>0

------解决方案--------------------
这个表设计不合理啊,
computerid(计算机编号 int ) computerpart(计算机配件 int)
1 1
1 2
1 3
5 205
5 100
5 52
--------------------------------------------
配件表tab2
--------------------------------------------
partid(计算机配件ID INT\INDEX\KEY\NOT NULL) partname(名称 varchar)
1 philips display
2 two birds keyboard
3 westdata harddisk


我select partname from tab2 where id in (select computerpart from tab1 where id=1)