1

今年、会社で販売された上位 100 の SKU を一覧表示するクエリを作成しました。私たちは 650 を超えるアイテムを販売しており、このアイテムのサイズには複数のバリエーションがあり、合計 SKU は約 15,000 に及びます。トップ 100 の SKU のみで行われた注文を表示するクエリを作成しようとしていますが、取得できるのは次の注文だけです。トップ 100 に SKU が含まれています。

これが私のSQLステートメントです

SELECT 
  Year([DATE_FLD]) AS Expr1, 
  tbl_SalesOrderDetail.ITEM_CODE, 
  tbl_SalesOrderDetail.CUST_CODE, 
  tbl_SalesOrderDetail.DOC_NO
FROM (tbl_SalesOrderDetail 
LEFT JOIN qry_NotTop100 
  ON tbl_SalesOrderDetail.ITEM_CODE = qry_NotTop100.Code) 
INNER JOIN qry_Top100 
  ON tbl_SalesOrderDetail.ITEM_CODE = qry_Top100.Code
WHERE (((Year([DATE_FLD]))=Year(Date())) AND ((qry_NotTop100.Code) Is Null))
ORDER BY tbl_SalesOrderDetail.DOC_NO;

私が間違っている可能性があることについてのアイデアはありますか?

4

1 に答える 1

0

あなたが望むのはアンチ結合です。方法はいくつかありますが、これNOT INはその方法の 1 つです。NOT IN必ずしも非常に効率的ではありませんが、どこを改善すればよいかがわかります。

  • を削除LEFT JOINqry_NotTop100ます。
  • WHEREの句を削除します。qry_NotTop100
  • WHERE句に追加AND tbl_SalesOrderDetail.ITEM_CODE NOT IN ( SELECT qry_NotTop100.Code FROM qry_NotTop100 )
于 2013-05-13T22:13:18.310 に答える