Мне нужно найти продукты (ProductName), поставляемые компаниями (CompanyName), названия которых начинаются с букв «a» и «g», а затем показывают самый дешевый (UnitPrice). Я пытался найти ответ, но, похоже, не могу понять его правильно - мне кажется, я просто нахожу общее минимальное значение, а не минимальное значение из уже выбранных продуктов. Я был бы очень признателен за помощь и некоторые объяснения!
Код, который просто выбирает продукты на основе названия компании:
SELECT
'The cheapest' ttype,
p.ProductName,
s.CompanyName,
c.CategoryName,
p.UnitPrice
FROM
dbo.Products p
INNER JOIN
dbo.Categories c
ON
c.CategoryID = p.CategoryID
INNER JOIN
dbo.Suppliers s
ON
s.SupplierID = p.SupplierID
WHERE
SUBSTRING(CompanyName, 1, 1) > 'a' and SUBSTRING(CompanyName, 1, 1) < 'g'
Пробный:
AND
UnitPrice = (
SELECT
MIN(UnitPrice)
FROM
Products
)
и:
NOT EXISTS (SELECT 1 FROM Products pr WHERE pr.UnitPrice < p.UnitPrice)
и с помощью SELECT TOP 1 [...] ORDER BY UnitPrice As c, однако (!) Мне нужно сделать объединение позже (выберите также самый дорогой продукт), а ORDER BY не делает Видимо, я не работаю с UNION.
Извините, если код не лучший - я новичок в SQL. Спасибо за ваше время!