求教一查询语句,谢谢create table test
(
xsID int primary key identity,
Reg_ID int,                      --会员ID
cpID int,  --产品ID
Area_a int,                      --地区ID
Type_ID int,  --类型ID
xs_num int,
xs_total int,
xs_date datetime default(getdate()) --日期
)表如上,我要进行多条件查询,比如说“产品ID”有多种(可多选),并且“地区ID”有多个(可多选),还有可能根据会员ID(单选)或者
类型ID(单选),或者日期(单选)进行查询结果。
我的想法是这样的,能不能用嵌套查询,就是先查出符合“产品ID(可多选)”的结果,再在该结果中根据“地区ID(可多选)”进行查询,再得出结果,再根据上面的结果再进行其他单选的条件进行搜索。请教这样行吗?查询语句该怎么写啊?

解决方案 »

  1.   

    --表如上,我要进行多条件查询,比如说“产品ID”有多种(可多选),并且“地区ID”有多个(可多选),
    select * from test where cpID in (1001,1002,...) and Area_a in(101,102...) 
    --还有可能根据会员ID(单选)或者类型ID(单选),或者日期(单选)进行查询结果。 
    select * from test where Reg_ID = 10001 or xs_date = '2009-03-01'
      

  2.   

    --不必嵌套,实际上是一个WHERE语句的连接。
    --用动态语句,举例。
    declare @sql varchar(2000)
    set @sql='select * from test where 1=1 and 产品条件 and 地区条件 and 会员条件 and 日期条件 or 其他条件'
    exec (@sql)
      

  3.   

    create table test 

    xsID int primary key identity, 
    Reg_ID int,                      --会员ID 
    cpID int, --产品ID 
    Area_a int,                      --地区ID 
    Type_ID int, --类型ID 
    xs_num int, 
    xs_total int, 
    xs_date datetime default(getdate()) --日期 

    select * from test where Reg_ID in ('对应的ID') and cpID in('对应的ID')
      

  4.   

    --能不能用嵌套查询,就是先查出符合“产品ID(可多选)”的结果,再在该结果中根据“地区ID(可多选)”进行查询,再得出结果,再根据上面的结果再进行其他单选的条件进行搜索。
    不需要,在查询的时候用关键字连接好,比如like,=,and,or,逻辑关系处理好,系统会帮你过滤出来的。
      

  5.   

    谢谢大家!解决了======> sdhdy
    你的那种方法不错,但是不懂用,能否详细点介绍一下啊?
      

  6.   

    SQL code动态sql语句基本语法 
    1 :普通SQL语句可以用Exec执行 eg:  Select * from tableName 
            Exec('select * from tableName') 
            Exec sp_executesql N'select * from tableName'    -- 请注意字符串前一定要加N 2:字段名,表名,数据库名之类作为变量时,必须用动态SQL eg:  
    declare @fname varchar(20) 
    set @fname = 'FiledName' 
    Select @fname from tableName              -- 错误,不会提示错误,但结果为固定值FiledName,并非所要。 
    Exec('select ' + @fname + ' from tableName')    -- 请注意 加号前后的 单引号的边上加空格 当然将字符串改成变量的形式也可 
    declare @fname varchar(20) 
    set @fname = 'FiledName' --设置字段名 declare @s varchar(1000) 
    set @s = 'select ' + @fname + ' from tableName' 
    Exec(@s)                -- 成功 
    exec sp_executesql @s  -- 此句会报错 
    declare @s Nvarchar(1000)  -- 注意此处改为nvarchar(1000) 
    set @s = 'select ' + @fname + ' from tableName' 
    Exec(@s)                -- 成功    
    exec sp_executesql @s  -- 此句正确 3. 输出参数 
    declare @num int, 
            @sqls nvarchar(4000) 
    set @sqls='select count(*) from tableName' 
    exec(@sqls) 
    --如何将exec执行结果放入变量中? declare @num int, 
                  @sqls nvarchar(4000) 
    set @sqls='select @a=count(*) from tableName ' 
    exec sp_executesql @sqls,N'@a int output',@num output 
    select @num