2013-03-21 75 views
2

我试图根据两个条件为警报系统返回记录。 第一个条件是在系统中为类型值为B的明天日期[Date()+ 1]进行预订。如果该JobNumber也具有A的Type值(在另一个记录中)且AND字段的值为“未获批准”我们需要返回警报。如何根据同一个表上的查询结果在表/记录集中查找记录?

示例表:

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

到目前为止,我已经能够创建VBA一个SQL查询返回的第一个条件的结果,并通过结果循环返回相关的JobNumbers。如何将这些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'));" 

任何帮助将非常感激。

回答

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 
+0

非常感谢Remou这么快速的回复。你的答案完美无缺。应该只有一个记录返回,所以希望不会发生错误。 – Brett 2013-03-22 09:43:39

相关问题