0

私は、倉庫に到着して出荷されたすべての異なるバッチの記録を保持する Access データベースに取り組んでいます。倉庫内の場所は Lot_ID で示されます。
テーブルには次のデータが含まれています。

Batch_ID | Lot_ID |Arrival_date | Shipping_date
------------------------------------------------------
1        |  1     | 2013/7/08   | 2013/8/21 
2        |  2     | 2013/7/10   |   
3        |  3     | 2013/7/15   | 2013/8/28 
4        |  1     | 2013/7/22   | 2013/8/23 
5        |  3     | 2013/8/12   |   

現在占有されていない Lot_ID のみを表示するクエリを作成しようとしています。

この問題は、テーブルに現在のデータと履歴データの両方が含まれているために発生します。私の考えは、テーブルを Lot_ID でグループ化し、グループ内のすべての行の Shipping_date が null でないグループのみを選択することです (つまり、ロットに保存されたすべてのバッチは既に出荷され、現在ロットは無料です)。

したがって、結果は次のようになります。

Batch_ID  
--------- 
1     

では、この場合、どの SQL クエリを使用するのがよいでしょうか?

4

3 に答える 3

0

以下のリンクを確認する必要があり ます http://www.w3schools.com/sql/sql_where.asp

「where shipping_date = null」のようなwhere caluseを使用する必要があります

于 2013-09-05T04:16:07.973 に答える
0

出荷日が null でなく、ロット ID の出荷日が null でないすべてのロット ID を選択します。

内部クエリは、まだ出荷されていないすべてのロットを提供します。つまり、それらは無料ではありません。

SELECT DISTINCT LOT_ID
FROM tableName
WHERE Shipping_date IS NOT NULL 
      AND LOT_ID NOT IN (SELECT DISTINCT LOT_ID
                          FROM tableName
                          WHERE Shipping_date IS NULL)

null 出荷日を持たないすべてのロット ID を選択しても機能するはずです

SELECT DISTINCT LOT_ID
FROM tableName
WHERE  LOT_ID NOT IN (SELECT DISTINCT LOT_ID
                          FROM tableName
                          WHERE Shipping_date IS NULL)
于 2013-09-05T04:16:17.077 に答える