【问题标题】:How can I find records in a table / recordset based on the result of a query on the same table?如何根据对同一张表的查询结果在表/记录集中查找记录?
【发布时间】:2013-03-10 20:05:43
【问题描述】:

我正在尝试根据两个条件返回警报系统的记录。 第一个条件是系统中有明天日期 [Date()+1] 的预订,类型值为 B。如果该 JobNumber 的类型值(在另一条记录中)也为 A 并且结果字段的值为“ Not Approved”我们需要返回一个警报。

示例表:

JobNumber   Type    Company Date            Result
58129       B       3       22/03/2013      
58129       A       3       20/03/2013      Not Approved
58129       C       3

到目前为止,我已经能够在 VBA 中创建一个 SQL 查询来返回第一个条件的结果,并遍历结果以返回相关的 JobNumber。如何插入这些 JobNumbers 作为第二个 SQL 查询的条件,或者是否可以将所有条件组合到一个 SQL 语句中?

到目前为止我的 SQL:

strSQL1 = "SELECT I.JobNumber, I.Type, I.Company, I.Date, I.Result " & _
          "FROM tblInspection I " & _
          "WHERE (((I.Type)='B') AND ((I.Date)=Date()+1));"

strSQL2 = "SELECT I.JobNumber, I.Type, I.Company, I.Date, I.Result " & _
          "FROM tblInspection I " & _
          "WHERE (((I.Type)='A') AND ((I.Result)<>'approved'));"

任何帮助将不胜感激。

【问题讨论】:

    标签: ms-access vba


    【解决方案1】:

    您可以从同一个表或另一个表中获取一个字段。如果返回多于一行,这将给出错误,但是否返回多于一行取决于您的数据。如果可能,您将需要添加另一个标准,例如日期。

    SELECT I.JobNumber, I.Type, I.Company, I.Date, I.Result,
        (SELECT Result 
         FROM tblInspection q 
         WHERE q.JobNumber=i.JobNumber 
         AND Result="Not Approved" 
         AND Type="A")
    As ResultA
    FROM tblInspection I
    WHERE I.Type='B' AND I.Date=Date()+1
    

    【讨论】:

    • 非常感谢 Remou 的快速回复。您的答案完美无缺。应该只返回一条记录,所以希望不会发生错误。
    猜你喜欢
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多