0

問題に直面し、数時間ヒントが得られない。多分onyoneは私を助けることができます。

トップセラーを表示する次のクエリがあります。したがって、製品のステータス(アクティブかどうか)はb.Article_Status(0 =非アクティブ、1 =アクティブ)に保存されます。

現在製品ファミリーにアクティブな製品がない結果リストの製品を取得するにはどうすればよいですか。ただし、古い商品が注文された場合(およびテーブルorder_itemsにある場合)、商品は引き続き非アクティブであり、アクティブな商品はまだ注文されていません。

実際のクエリは次のようになります。実際のアクティブな製品が一度注文されたときに機能するソリューションにすでに資金を提供していますが、それでも前述のケースの問題があります。

SELECT count( a.order_itemid ) AS numOrders, c.Product_ID, c.Product_Name, d.producer_name
FROM order_items a
LEFT OUTER JOIN product_article b ON b.Article_ID = a.order_itemid
LEFT OUTER JOIN product c ON b.Article_Productid = c.Product_ID
LEFT OUTER JOIN producer d ON c.Product_Producer = d.producer_id
GROUP BY c.Product_ID
ORDER BY `numOrders` DESC
4

1 に答える 1

0

解決策はWHEREEXISTSサブクエリでした

SELECT count( a.order_itemid ) AS numOrders, c.Product_ID, c.Product_Name, d.producer_name
FROM order_items a
LEFT OUTER JOIN product_article b ON b.Article_ID = a.order_itemid
LEFT OUTER JOIN product c ON b.Article_Productid = c.Product_ID
LEFT OUTER JOIN producer d ON c.Product_Producer = d.producer_id
WHERE EXISTS (SELECT * FROM product_article x WHERE c.Product_ID = x.Article_Productid AND x.Article_Status = 1)
GROUP BY c.Product_ID
ORDER BY `numOrders` DESC
LIMIT 5
于 2012-05-30T13:05:29.867 に答える