У меня есть SQL-запрос, возвращающий к 27 продаж продукции из базы данных:SQL вернуть верхнюю часть продавая продукты из базы данных
SELECT TOP 27 ROW_NUMBER() OVER (ORDER BY ttP.ProductName ASC) AS Rno, ttP.*, ttI.ImageID FROM tblProducts AS ttP
LEFT OUTER JOIN (SELECT ImageID, ProductID FROM tblImages WHERE Main = 1) AS ttI ON ttP.ProductID = ttI.ProductID
LEFT OUTER JOIN (SELECT TOP 27 ProductID, SUM(Quantity) AS NumSold FROM tblOrderItems GROUP BY ProductID ORDER BY SUM(Quantity) DESC)
AS ttOI ON ttP.ProductID = ttOI.ProductID
WHERE ttP.ProductVisibleOnline = 1 AND ttP.CollectionID IS NULL
AND ttOI.NumSold IS NOT NULL
ORDER BY ttOI.NumSold DESC, ttP.ProductName ASC
Я хочу добавить следующее ИНЕКЕ так что возвращает топ 27 продуктов, имеют определенную функцию
WHERE ttP.ProductID IN (SELECT ProductID FROM tblProductsFeatures WHERE FeatureID = 3)
Так я иду вперед и добавить его к концу оператора и в конечном итоге с этим:
SELECT TOP 27 ROW_NUMBER() OVER (ORDER BY ttP.ProductName ASC) AS Rno, ttP.*, ttI.ImageID FROM tblProducts AS ttP
LEFT OUTER JOIN (SELECT ImageID, ProductID FROM tblImages WHERE Main = 1) AS ttI ON ttP.ProductID = ttI.ProductID
LEFT OUTER JOIN (SELECT TOP 27 ProductID, SUM(Quantity) AS NumSold FROM tblOrderItems GROUP BY ProductID ORDER BY SUM(Quantity) DESC)
AS ttOI ON ttP.ProductID = ttOI.ProductID
WHERE ttP.ProductVisibleOnline = 1 AND ttP.CollectionID IS NULL
AND ttOI.NumSold IS NOT NULL
AND ttP.ProductID IN (SELECT ProductID FROM tblProductsFeatures WHERE FeatureID = 3)
ORDER BY ttOI.NumSold DESC, ttP.ProductName ASC
Это возвращает 11 записей, которые являются подмножеством 27 самых продаваемых товаров без предложения where. Я не понимаю, где я могу поставить предложение where, чтобы получить 27 лучших продуктов с FeatureID = 3. Любая помощь будет принята с благодарностью.
Я не совсем понимаю ваш вопрос. Возможно, образцы данных и желаемые результаты помогут объяснить. Как есть, должно быть только 11 строк, которые соответствуют вашим критериям 'where' -' top 27' не будет ограничивать это. Я подозреваю, что ваша проблема связана с вашим подзапросом - внешнее соединение, выбирая 27 строк, но затем критерии where, отрицающие внешнее соединение ... – sgeddes