读书人

SQL有关问题求教

发布时间: 2012-09-24 13:49:41 作者: rapoo

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)

读书人网 >SQL Server

热点推荐