以下のようなSQLクエリがあります。where 部分で必要なのは、SiteId に関係なく、CategorySite が ProductCategory で一致する categoryid を持つ行を 3 つ以上返す行を返さないことです。問題は、ProductCategory には、受け取った結果の一部に一致するカテゴリが複数あることを知っているため、クエリに何か問題があり、何が原因かわかりません。
select top 10 pp.*
from ProductProperty pp
inner join ProductCategory pc on pp.fkProductId = pc.fkProductId and pp.fkLocaleId = 1
inner join CategorySite cs on pc.fkCategoryId = cs.fkCategoryId and cs.fkSiteId = 2
inner join CategoryProperty cp on cs.fkCategoryId = cp.fkCategoryId and cp.fkLocaleId=1
where (select count(*) from CategorySite css where pc.fkCategoryId = css.fkCategoryId) = 1