Это можно сделать довольно просто в запросе, который не использует представления - это будет что-то вроде:
select c.CategoryName, count(p.ProductID)
from Category c
left join Product p
on c.CategoryID = p.CategoryID and p.ProductID = 100
Обратите внимание, что условие для ProductID должно быть частью критерия соединения, а не в предложении where, в противном случае запрос будет возвращать только категории, включающие указанный продукт.
Это может быть сделано довольно неэффективно в представлении, используя перекрестное соединение - что-то вроде:
create view vwCategoryProduct as
select c.CategoryName,
p.ProductID,
case when c.CategoryID = p.CategoryID then 1 else 0 end as ProductIncluded
from Category c
cross join Product p
- и затем выбрать из вида примерно так:
select * from vwCategoryProduct where ProductID = 100