1

非常にかさばり、最適化で実行できると思うクエリがあります。まず、サブクエリではないものを結合に置き換えることは明らかですが、それは私が持っているサブサブクエリに影響します。提案/回避策をいただければ幸いです。

これはクエリです

SELECT *
FROM lastweeksales
WHERE productID =  1234
AND retailer NOT 
IN (
    SELECT retailer
    FROM sales
    WHERE productID
    IN (
        SELECT productID
        FROM products
        WHERE publisher = 123
    )
    AND DATE =  date(now())
)

基本的に、今日の販売を行った小売業者が存在しない製品の先週の販売から行を取得したいのですが、販売は特定の発行元の製品のみで行う必要があります。

:S:S:S

4

1 に答える 1

1

を使用して、2つの内部サブクエリを簡単にグループ化できますINNER JOIN。外側のものについては、次のように、LEFT OUTER結合を使用してからフィルタリングする必要があります。retailer IS NULL

SELECT lws.*
  FROM lastweeksales lws
  LEFT JOIN (SELECT s.retailer 
               FROM sales s
               JOIN products p USING (productID)
              WHERE p.publisher = 123
                AND s.date = date(now())) AS r
         ON lws.retailer = r.retailer
 WHERE r.retailer IS NULL;
于 2012-05-30T12:28:10.210 に答える