declare @sqlstr varchar(max), @querywhere varchar(max)
--set @querywhere='where BarCode like ''%9%'''
--set @querywhere='where BarCode =''9'''
set @querywhere='where s.StoreNo =''234'' '
set @sqlstr='
select distinct 0 as ttype,''店'' as ttype1, s.Id,s.StoreNo as tNo,s.StoreName as tName,s.Provinces,s.City,s.Region 
 from ST_Store s
 left join ST_StoreShelf as ss on (ss.S_Id=s.Id)
 left join ST_ShelfReserve as sr on (sr.S_Id=ss.Id)
 left join CO_Commodity as c on(sr.C_Id=c.Id),ST_Depot d '+@querywhere+'
 union
 select distinct 1 as ttype,''仓库'' as ttype1,d.Id,d.DepotNo as tNo,d.DepotName as tName,d.Provinces,d.City,d.Region 
 from ST_Depot d
 left join ST_DepotReserve dr on (dr.D_Id=d.Id) 
 left join CO_Commodity c on (c.Id=dr.C_Id),ST_Store s '+@querywhere
 
 
exec(@sqlstr)问题是,我想得到的只是店的资料,它怎么把仓库的也全部查出来了
 

解决方案 »

  1.   

    这个是我的条件:set @querywhere='where s.StoreNo =''234'' ' 
    查询结果:    种类    编号     名称    所属省   所属市    所属区
       
        店      234     1     广东省    广州市   天河区
        仓库    123     2     广东省    广州市   天河区
        仓库    456     3     广东省    广州市   白云区
        仓库    789     4     广东省    佛山     顺德区
      

  2.   

       这是一个存储过程,我从程序中传了个查询条件过来,查询条件是一个字符串,它有可能为where s.StoreNo =234 and d.DepotNo =345 但有有可能只是其中一个。而要显示查询结果的视图列头为:
            种类 编号 名称 所属省 所属市 所属区    编号和名称有可能是store店表的,也可以是 ST_Depot 仓库表的,现在我的问题是我必须从集成的查询条件中分别从两个表中查询数据并整合到一个视图中显示出来,而我又不知道怎么从一条含有两个表的查询条件中分别从两个表中查询出对应的内容再整合到一个视图中
        比如说:
        查询条件为where s.StoreNo =234 and d.DepotNo =345
       但是s.StoreNo =234 只能对应ST_Store 表
        而d.DepotNo=345 只能对应ST_Depot 表
        两个表的结构一样: 种类 编号 名称 所属省 所属市 所属区
        我要得到的是:
        条件可以为:1、where s.StoreNo =234 and d.DepotNo =345
                 2、where s.StoreNo =234 
                 3、where d.DepotNo =345
        分别从店和仓库表中查询数据在用union整合显示到一个视图中,视图的列头为
         种类 编号 名称 所属省 所属市 所属区
     
      

  3.   

    不好意思,我把问题搞复杂了,其实就这样子
    表结构:
    店:Id,StoreNo ,StoreName ,Provinces,City,Region   仓库:DepotNo ,DepotName ,Provinces,City,Region   要显示效果的视图结构:   种类(ttype) 店/仓库编号(tNo) 店/仓库名(tName) 所属省(Provinces) 所属市(City) 所属区(Region )
    我要从程序中传条件过来,条件有可能有三种情况:
       1、where s.StoreNo =234 and d.DepotNo =345
       2、where s.StoreNo =234   
      3、where d.DepotNo =345
    这就以为着,我要从两个表中查出相关内容并整合到一起,再显示出来,我写成这样子:
    declare @sqlstr varchar(max), @querywhere varchar(max)
    set @querywhere='where s.StoreNo =''234'' '
    set @sqlstr='
    select distinct ''店'' as ttype, s.StoreNo as tNo,s.StoreName as tName,s.Provinces,s.City,s.Region   
    from ST_Store s,ST_Depot d '+@querywhere+'
       union
    select distinct ''仓库'' as ttype,d.DepotNo as tNo,d.DepotName as tName,d.Provinces,d.City,d.Region   
    from ST_Depot d,ST_Store s '+@querywhereexec(@sqlstr)执行结果:
       种类(ttype) 店/仓库编号(tNo) 店/仓库名(tName) 所属省(Provinces) 所属市(City) 所属区(Region )
       店 234 1 广东省 广州市 天河区
       仓库 23 2 广东省 广州市 天河区
       仓库 456 3 广东省 广州市 白云区
       仓库 789 4 广东省 佛山 顺德区