Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MS Access SQL在where子句中联接表时未收到任何结果_Sql_Ms Access - Fatal编程技术网

MS Access SQL在where子句中联接表时未收到任何结果

MS Access SQL在where子句中联接表时未收到任何结果,sql,ms-access,Sql,Ms Access,我正在尝试用vb代码更新同事的MS Access应用程序。我在编写SQL查询方面相当有经验,但我无法解决以下问题 我要修复的查询使用了直通查询的结果和本地MS Access表,并在where子句中将它们连接在一起,我尝试使用ON的正常方式,但当涉及直通查询时,这似乎不起作用。我在where子句中连接表方面没有什么经验,但是在where子句中连接表时,是否存在这样一种情况,即我不能使用where子句中两个表的某些列?->当我使用一个总是满足的过滤条件,如columnA'somerandomtext

我正在尝试用vb代码更新同事的MS Access应用程序。我在编写SQL查询方面相当有经验,但我无法解决以下问题

我要修复的查询使用了直通查询的结果和本地MS Access表,并在where子句中将它们连接在一起,我尝试使用ON的正常方式,但当涉及直通查询时,这似乎不起作用。我在where子句中连接表方面没有什么经验,但是在where子句中连接表时,是否存在这样一种情况,即我不能使用where子句中两个表的某些列?->当我使用一个总是满足的过滤条件,如columnA'somerandomtext'时,只是为了指出问题,查询结果是空的。当我在where子句中删除后一个条件时,查询返回的结果虽然太多,因为我无法相应地过滤它们

此外:我检查了pass-through查询,结果是正确的。我检查了MS Access表,表中的数据是正确的。因此,我认为我在加入上述两个元素的查询中可能做错了什么

此查询按预期工作并返回结果:

SELECT t.tr_id, t.ser_num, t.contrgnt_id, t.pos_ekey, t.sernum AS cmdty,             format(t.vol,""##,###,###.00"") AS volume, t.unit_def, t.value_date,
format(t.coup,""##,###,###.00"") AS fixprice,
format(s.calcvarprice,""##,###,###.00"") AS marketprice,
format(s.calcamount,""##,###,###.00"") AS payamount,
format(s.settlevarprice, ""##,###,##0.00"") as settleprice,
format(s.settleamount, ""##,###,##0.00"") as settleamount, s.sync
FROM pms_trans AS t, settledata AS s
WHERE t.tr_id=s.tr_id And t.is_booked='N' And t.value_date>='01.01.2021' And t.value_date<='01.04.2021'
此查询以某种方式返回0个结果:

SELECT t.tr_id, t.ser_num, t.contrgnt_id, t.pos_ekey, t.sernum AS cmdty,             format(t.vol,""##,###,###.00"") AS volume, t.unit_def, t.value_date,
format(t.coup,""##,###,###.00"") AS fixprice,
format(s.calcvarprice,""##,###,###.00"") AS marketprice,
format(s.calcamount,""##,###,###.00"") AS payamount,
format(s.settlevarprice, ""##,###,##0.00"") as settleprice,
format(s.settleamount, ""##,###,##0.00"") as settleamount, s.sync
FROM pms_trans AS t, settledata AS s
WHERE t.tr_id=s.tr_id And t.is_booked='N' And t.pos_ekey <> 'BGGS' And t.value_date>='01.01.2021' And t.value_date<='01.04.2021'
如前所述,尽管我在网上没有找到足够的信息,但我怀疑加入via where子句时存在一些限制

向您致以最良好的问候并提前表示感谢


Peter

首先,为日期表达式应用正确的语法:

WHERE t.tr_id=s.tr_id And t.is_booked='N' And t.pos_ekey <> 'BGGS' And t.value_date >= #2021-01-01# And t.value_date <= #2021-04-01#

接下来,再次检查pos_ekey的值。例如,尝试直接在表视图中的字段上应用过滤器“BGGS”。

t.value_date>='01.01.2021中缺少终止单引号,谢谢,您已经更新了问题!pos_ekey中除了“BGGS”之外还有什么其他值?pos_ekey列包含多个客户端名称,其中一个是“BGGS”,另一个例子是“KERT”。该列基本上用于筛选客户端。但是,正如我在帖子中提到的,即使我输入了一个始终令人满意的ficitonal标准,例如“fiuhfriu4h3ouf43f”,也不会返回结果。当你忽略t.pos_ekey“BGGS”时,你会得到t.pos_ekey的值吗?NULL不等于“BGGS”。