我有一张表。数据如下:
productID valuesName
0300001 无光驱
0300001 集成
0300001 2G
0300001 320G
0300002 内置
0300002 集成
0300003 无光驱
0300003 集成
0300003 2G
0300003 320G
求教各位我怎么样能查到 valuesName 即等于‘无光驱’又等于 ‘集成’ 还等于 ‘2G’ 的productID
这个 valuesName 的参数个数不确定。有时候两个 有时候三个 还有时候更多那位大侠帮我解决一下。建表语句已经写好了, 直接copy可用。create table ProductParamters
(
productID varchar(30) not null,
valuesName nvarchar(300) not null
)
goinsert into ProductParamters values ('0300001','无光驱')
insert into ProductParamters values ('0300001','集成')
insert into ProductParamters values ('0300001','2G')
insert into ProductParamters values ('0300001','320G')
insert into ProductParamters values ('0300002','内置')
insert into ProductParamters values ('0300002','集成')
insert into ProductParamters values ('0300003','无光驱')
insert into ProductParamters values ('0300003','集成')
insert into ProductParamters values ('0300003','2G')
insert into ProductParamters values ('0300003','320G')select * from ProductParamters
productID valuesName
0300001 无光驱
0300001 集成
0300001 2G
0300001 320G
0300002 内置
0300002 集成
0300003 无光驱
0300003 集成
0300003 2G
0300003 320G
求教各位我怎么样能查到 valuesName 即等于‘无光驱’又等于 ‘集成’ 还等于 ‘2G’ 的productID
这个 valuesName 的参数个数不确定。有时候两个 有时候三个 还有时候更多那位大侠帮我解决一下。建表语句已经写好了, 直接copy可用。create table ProductParamters
(
productID varchar(30) not null,
valuesName nvarchar(300) not null
)
goinsert into ProductParamters values ('0300001','无光驱')
insert into ProductParamters values ('0300001','集成')
insert into ProductParamters values ('0300001','2G')
insert into ProductParamters values ('0300001','320G')
insert into ProductParamters values ('0300002','内置')
insert into ProductParamters values ('0300002','集成')
insert into ProductParamters values ('0300003','无光驱')
insert into ProductParamters values ('0300003','集成')
insert into ProductParamters values ('0300003','2G')
insert into ProductParamters values ('0300003','320G')select * from ProductParamters
解决方案 »
- ASP.NET 大型OA、进销存源码转让,C#+SQL SERVER
- 如何通过客户端JS脚本触发UpdatePanel的Trigger提交页面更新
- Gridview 统计问题,在线等,会的朋友麻烦帮个忙
- 如何获取CheckBoxList当前选项的值(CheckBoxList允许多选)
- 求9,如何在页面内实现类似与iframe的滚动条效果
- asp.net写入文件时出错!!!
- 请教:这样的一个系统可以实现吗?
- 如何把服务器端生成的XML文件保存在某个请求客户端的内存中?
- 我做menu的时候用的是asp.net控件,但做完菜单后,我不知道点击某一个菜单项然后弹出另一个窗口的代码该怎么写?
- 急!关于<form runat="server">
- .xsd里数据类型的问题!!!!!!!!!
- 提供接口用于用户登录验证,如何保本登录信息
select * from ProductParamters where valuesName in (@value ) @value 自己拼接
然后用下面的语句:
select productid from ProductParamters where valuesName in (s) group by productid having count(productid)=n
select * from ProductParamters
where 1=1
-------------------下面这些你在应用程序中遍历加载条件
AND valuesName ='XXX'
AND valuesName ='XXXX'2)针对不是同一个productID下的不同valuesName
select * from ProductParamters
where 1=1
-------------------下面这些你在应用程序中遍历加载条件
valuesName in('XXX' ,'XXXX','','')
假设定义一个条件
string where=" '无光驱','集成','2G'";
这个字符串是动态的 你通过C# 线进行处理好。
然后 在拼接 SQL 语句string sqlselect="select distinct productID from ProductParamters where valuesName in ("+ where+")";可以试试这样 处理下吧。
1楼 7楼 8楼 的肯定是查不出来的。
还请各位高手帮忙呀。
自己用程序判断啊,生成sql
returns @temp table( [id] int identity(1,1),a varchar(100))
as
begin
declare @i int
set @SourceSql=rtrim(ltrim(@SourceSql))
set @i=charindex(@StrSeprate,@SourceSql)
while @i>=1
begin
insert @temp values(left(@SourceSql,@i-1))
set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
set @i=charindex(@StrSeprate,@SourceSql)
end
if @SourceSql<>''
insert @temp values(@SourceSql)
return
end
接下来,就是写存储过程,下面是我写好的,你执行就行:
Create proc [dbo].[test111]
(
@valuename varchar(500) --这里是输入参数,你直接输入那段字符串就行,例如:无光驱,集成
)
as begindeclare @name varchar(500)
declare @i int,@len int
set @i=1
select @len=count(id) from dbo.f_split(@valuename,',')
while @i<@len
begin
select @name=a from dbo.f_split(@valuename,',') where id=@i
select productID from ProductParamters where valuesName =@name
set @i=@i+1
endend
帮你测了下,没有问题,呵呵
WHERE P.productID IN (
SELECT M.productID FROM
(
SELECT a.productID,status =stuff((
select ','+convert(varchar(20),valuesName)
FROM ProductParamters WHERE productID = a.productID for xml path('')),1,1,'')
FROM ProductParamters a
group by a.productID
)M
WHERE M.status ='内置,集成'
)
WHERE P.productID IN (
SELECT M.productID FROM
(
SELECT a.productID,status =stuff((
select ','+convert(varchar(20),valuesName)
FROM ProductParamters WHERE productID = a.productID for xml path('')),1,1,'')
FROM ProductParamters a
group by a.productID
)M
WHERE 1=1
AND CHARINDEX('内置',M.status)>0
AND CHARINDEX('集成',M.status)>0
)