Access 2013:检查另一个表中是否存在值

时间:2014-03-07 19:56:10

标签: validation ms-access reference sql-update relational-database

我刚刚发现Access,一直是Excel / VBA的人...现在我遇到了障碍!

我正在为我的雇主建立一个库存数据库。我有2个表,一个包含一列'stockID'(让我们调用此表'tblWarehouse'),另一个包含两列:一列'orderID'和一列'stockID'(让我们称之为'tblOrders')。 (为了这个问题,我们可以忽略诸如数量,价格等事情)

我们不会将我们销售的所有商品保留在我们自己的仓库中,有些是直接从制造商处采购给客户,这意味着并非所有tblOrders!stockID都将出现在列表tblWarehouse!stockID中。我需要找出这种情况的时候!

我想在tblOrders中创建第三列,如果该特定项目在我们的仓库中,则包含虚拟变量= 1。换句话说,如果tblOrders!stockID可以在tblWarehouse!stockID中找到,我想创建一个计算列= 1。可以这样做吗?

我发现我不能直接引用另一个表,所以我一直在尝试查询,用户定义的函数和关系,但无济于事。我也一直在使用不同地方的Access-lingo和名副其实的森林来输入看似相同的表达式......所以,如果你有答案,请务必指明事情的位置!

非常有责任!!

1 个答案:

答案 0 :(得分:0)

如果使用内部联接在查询中链接两个表,则只有至少有一个库存条目的订单记录才会包含在结果中。为了包括那些根本没有库存条目的人,请创建一个左外连接。

SELECT O.OrderID, IIf(IsNull(MAX(W.StockID)), 0, 1) AS StockAvailable
FROM
    tblOrder O
    LEFT JOIN tblWarehouse W
        ON O.StockID = W.StockID
GROUP BY O.OrderID

您还可以通过右键单击关系线并选择“加入属性”,然后选择“包括来自tblOrders的所有记录...”来确定查询设计器中的连接类型。您可以通过单击符号列表中的大型Sigma符号来进行分组查询。