如何实现各表先作 where 筛选后再作 left outer join 语句查询?

xieyudada 2009-01-13 10:24:33
Access数据库。
例如这句:Rs1.Open "Select s.spzlID,s.mc,s.jj,s.dw,k.结存数量,k.结存单价,k.结存金额 from spzl as s,库存帐结存表 as k where s.lbbs='否'and k.仓库资料ID=" + Str(ckzlID) + " and Year(k.结存时间)=" + Str(Year(jcsj)) + " and Month(k.结存时间)=" + Str(Month(jcsj)) + " and s.spzlID=k.商品资料ID order by s.lbbh asc,s.jc asc", Cnn, adOpenKeyset, adLockReadOnly '键集,只读
spzl 的意思是“商品资料”数据表。
目的:要查询出所有商品资料信息,并且每个商品如果在结存表中有符合条件的记录存在,那么就取出和其组为一条记录。
各位高手们,请教啦,如果将上句改为先将各表作 where 筛选查询后再作 left outer join 语句查询?
...全文
167 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
xieyudada 2009-01-13
  • 打赏
  • 举报
回复
谢谢这位兄弟,其实我在看到您的帮助之前自己刚刚已经试出来了。我将测试通过的语句贴出来供需要的朋友们参考。
Rs1.Open "Select s.spzlID,s.mc,s.jj,s.dw,k.结存数量,k.结存单价,k.结存金额 from (Select * from spzl where lbbs='否') s left outer join (Select * from 库存帐结存表 where 仓库资料ID=" + Str(ckzlID) + " and Year(结存时间)=" + Str(Year(jcsj)) + " and Month(结存时间)=" + Str(Month(jcsj)) + ") k ON s.spzlID=k.商品资料ID order by s.lbbh asc,s.jc asc", Cnn, adOpenKeyset, adLockReadOnly '键集,只读
结贴给分喽,这个论坛真是好地方啊!也不知道是哪些位大侠搞的!应该谢谢他们,当然还有谢谢无私帮助别人的回复者们。
_l_ 2009-01-13
  • 打赏
  • 举报
回复
select * feom 表2,(select * from 表1 where .....) as b where 表2.字段=b.字段

你自己照样子改改吧

7,765

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧