不遵守 WHERE 条件

WHERE condition isn't respected

目前我正在使用 AdventureWorks 数据库并处理一些查询。我试图解决以下练习:

按 ProductID 订购所有产品,

这是我的查询:

SELECT pp.ProductID, pp.Name, pps.Name FROM Production.Product pp

JOIN Production.ProductCostHistory ppch
ON pp.ProductID = ppch.ProductID

JOIN Production.ProductSubcategory pps
ON pps.ProductSubcategoryID = pp.ProductSubcategoryID

WHERE pps.Name LIKE 'Helmets' OR pps.Name LIKE 'Gloves'
    AND pp.Color LIKE 'Yellow' OR pp.Color LIKE 'Blue' OR pp.Color LIKE 'Black'

GROUP BY pp.ProductID, pp.Name, pps.Name
HAVING Count(ppch.ModifiedDate) > 1
ORDER BY pp.Name ASC

这是我的结果:

现在,提出我的问题。尽管我将两个条件与 'AND' 联系起来,但我收到了另外两个类别的结果,这些类别进一步列出了匹配的颜色('Road Frames' & 'Road Bikes') 我不太明白为什么。

结果不应该只显示满足两个条件的匹配项吗?

我确信可能有更好的方法来实现这一点,但我对 SQL 还很陌生,正在努力学习基础知识。

非常感谢您的帮助

更改 WHERE 子句以明确指示条件组,而不是让 AND 和 OR 的优先级决定结果。

WHERE
(pps.Name LIKE 'Helmets' OR pps.Name LIKE 'Gloves')
    AND
    (pp.Color LIKE 'Yellow' OR pp.Color LIKE 'Blue' OR pp.Color LIKE 'Black')

或更好

WHERE pps.Name IN('Helmets','Gloves')
    AND
    pp.Color IN ('Yellow','Blue','Black')