2

2 つの条件に基づいてアラート システムのレコードを返そうとしています。最初の条件は、明日の日付 [Date()+1] の Type 値が B の予約がシステムに存在することです。その JobNumber も (別のレコードで) Type 値が A であり、かつ Result フィールドの値が "承認されていません」というアラートを返す必要があります。

例のテーブル:

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

これまでのところ、最初の条件の結果を返す SQL クエリを VBA で作成し、結果をループして関連する JobNumbers を返すことができました。これらの JobNumbers を 2 番目の SQL クエリの基準として挿入するにはどうすればよいですか? または、すべての基準を 1 つの 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'));"

どんな助けでも大歓迎です。

4

1 に答える 1

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
于 2013-03-21T11:25:21.573 に答える