首页 新闻 会员 周边 捐助

两表联合查询

0
悬赏园豆:50 [待解决问题]

表结构:
店: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 '+@querywhere

exec(@sqlstr)

执行结果:
     种类(ttype)    店/仓库编号(tNo)   店/仓库名(tName)   所属省(Provinces)    所属市(City)    所属区(Region  )
     店             234                 1                 广东省               广州市          天河区
     仓库           23                  2                 广东省               广州市          天河区
     仓库           456                 3                 广东省               广州市          白云区
     仓库           789                 4                 广东省               佛山            顺德区


在这里,我只想获取店“234”的资料,但结果连仓库的资料也查出来了,请问怎么写?头疼

勇气的主页 勇气 | 初学一级 | 园豆:70
提问于:2011-09-01 15:31
< >
分享
所有回答(1)
0

你如果只要店了资料,就不需要去ST_Depot中查询啊

artwl | 园豆:16736 (专家六级) | 2011-09-01 15:42

不好意思, 如上所述,因为有三种情况,而且查询条件在程序中调用了公共查询窗口执行的,所以必须限定在一条字符串@querywhere中,要满足三种情况都可行

支持(0) 反对(0) 勇气 | 园豆:70 (初学一级) | 2011-09-01 15:48

@勇气:

你这个写法有问题的,ST_Depot表中根本就没有约束。这是设计上的问题,如果可以建议不要传入一个where条件,传入两个参数:StoreNo 跟 DepotNo

支持(0) 反对(0) artwl | 园豆:16736 (专家六级) | 2011-09-01 16:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册