【发布时间】:2013-03-16 13:52:13
【问题描述】:
在 Access 数据库中有两个表。
表一包含文章,表二包含价格。
所以文章是所有文章和价格的描述 表只包含一个货号、一个日期日期和一个价格。 如果价格发生变化,则会在价格中添加一个新行。
价格有一个使用该价格的日期。
现在我想获取 2012 年 10 月 1 日有效的价格。
我使用了当前价格的查询并添加了and prsdat<#02/10/2012#
到查询中的子选择。
这是我已经拥有的:
SELECT
Articles.ARTNR,
Articles.TXT,
Articles.ACTIVE,
Prices.PRICE,
Prices.PRSGR,
Prices.PRSDAT
FROM
Articles INNER JOIN Prices ON Articles.ARTNR = Prices.ARTNR
WHERE
(((Articles.ACTIVE)="Y") AND
((Prices.PRSGR)=0) AND
((Prices.PRSDAT)=
(SELECT
max(prsdat)
FROM
Prices as art
WHERE
art.artnr = Prices.artnr and prsdat<#02/10/2012#)))
ORDER BY
Articles.ARTNR;
现在选择返回我没有看到的文章
我以前用过,刚刚添加了and prsdat<#01/10/2012#。
结果现在是 430 篇文章,而我之前只有大约 260 篇。
返回的价格较旧,但我不确定日期格式。 在表中我看到 DD.MM.YYYY,在查询中我将使用 MM/DD/YYYY 或 DD/MM/YYYY?
这个选择的正确形式是什么?
【问题讨论】:
-
(Prices.PRSGR)=0是什么意思?您至少应该在子查询中复制该子句。 -
如果你自己运行子查询,它会返回什么?
-
@wildplasser 有价格组,我对价格组 0 感兴趣。
-
@DanBracuk 我删除了
art.artnr = Prices.artnrpart 然后从外部选择中复制了PrsGr=0部分,然后它返回一个日期。对我来说似乎是正确的。