2

注文データベースがあります。各注文は、注文に複数の SKU を持つことができます。同様に、SKU は複数の注文に関連付けることができます。各注文には、作成された日付を格納する日付フィールドがあります。

  • Table1 = 注文に添付されたすべての SKU 情報を格納する詳細テーブル
  • 表 2 = 各注文の詳細を取得するために表 1 と相互参照する注文 ID と出荷日を一覧表示する概要

私が探しているのは、特定の日付以降に注文に関連付けられていない SKU です。つまり、過去 30 日間注文されていない SKU のリストが必要です。

NOT BETWEEN は機能するはずですが、2012 年 7 月 21 日以降に注文された SKU が返され続けます。私が使用しているクエリは次のとおりです。

SELECT DISTINCT table1.sku, table2.ship_date
FROM table1, table2
WHERE table1.orderID = table2.orderID
AND table2.ship_date NOT BETWEEN  DATE ('2012-07-21') and DATE('2012-08-23')
ORDER BY table1.ship_date ASC;

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

4

1 に答える 1

2

not insku テーブルに基づいて使用する必要があります。

SELECT sku
FROM sku_table -- the table with the complete list of skus
where sku not in (
    -- all skus that were ordered after 2012-07-21
    SELECT sku
    from table1
    WHERE order_date > DATE('2012-07-21')
    union -- fyi union removes duplicates
    -- all skus that were shipped after 2012-07-21
    SELECT table1.sku
    from table2
    join table1 on table1.orderID = table2.orderID
    WHERE table2.ship_date > DATE('2012-07-21')
)

このクエリは、注文されたことのない SKU も返します。

于 2012-08-24T00:53:19.367 に答える