以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=102833)

--  作者:zhu_cn
--  发布时间:2017/6/26 16:29:00
--  [求助]
请问专家:
我用sql查询表时,在建立左查询时如何限定右表中的数据。比如 select * fro m a left join b on a.id=b.id and b.date=#2016-08-01#  后面下划线部分能够实现吗?

--  作者:有点色
--  发布时间:2017/6/26 17:27:00
--  

 尽量这样写

 

select * from a left join b on a.id=b.id where b.date=#2016-08-01#


--  作者:zhu_cn
--  发布时间:2017/6/26 18:30:00
--  
这样写有个问题,就是左表对应右表时会有一些空的数据(左表有的,右表不一定有),而我是想把右表数据先按条件筛选出来后再进行查询。
比如说,左表是我的设备(通过电话卡号标识),右表是移动账单,每月都会记账。而有些设备没有使用就不产生费用,在右表里就没有数据。如果用你给的sql语句就显示不出来这些对应的数据了,有什么方法吗?

--  作者:有点色
--  发布时间:2017/6/26 18:50:00
--  

select * from a left join (select * from b  where b.date=#2016-08-01#) as c on a.id=c.id


--  作者:zhu_cn
--  发布时间:2017/6/27 9:14:00
--  
谢谢,你的这个方法确实能够解决我的需求。这个方法在查询表生成器里可以实现吗?
--  作者:有点蓝
--  发布时间:2017/6/27 9:36:00
--  
可以的,试试就知道了
--  作者:zhu_cn
--  发布时间:2017/6/27 11:50:00
--  
下面是我的s elect语句,有一个错误, from 子句语法有误,拜托帮我看看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:查询.txt

--  作者:有点色
--  发布时间:2017/6/27 12:26:00
--  
Select  客户ID,设备ID,SIM卡号,计费日期,终止日期,终止原因,计费状态,换号号码,账单月份,起始日,费用总计,一级账目名称,一级账目金额,二级账目名称,二级账目金额 From {客户设备} as a Left JOIN (select * from {移动账单} where [起始日]=#2016-08-01#) as c ON c.[SIM号] = a.[SIM卡号] Group By 客户ID,设备ID,SIM卡号,计费日期,终止日期,终止原因,计费状态,换号号码,账单月份,起始日,费用总计,一级账目名称,一级账目金额,二级账目名称,二级账目金额 Order By 客户ID,计费日期,终止日期
--  作者:zhu_cn
--  发布时间:2017/6/30 12:40:00
--  
真的很佩服您,您对sql语言很精通,我试过了真很好用。我还想请教一下,如果是多个表建立查询,还想用到子查询,怎么办呢?
附录是两个查询,第一个没有问题,可以多表查询,但没有加子查询。第二个加了子查询,但有问题了,您给看看怎么改一下。

--  作者:有点蓝
--  发布时间:2017/6/30 14:14:00
--  
附录在哪?