SQL查询错误,应仅返回在另一个表中一次的供应商

问题描述

如果我尝试执行它,就会出错:

create View vwEinzellieferant
as
Select P.supplierID,S.CompanyName,S.ContactName,S.Address + ' ' + S.City + ' ' + S.Region + ' ' + S.PostalCode + ' ' + S.Country,S.Phone
from suppliers S inner join Products P on S.supplierID = P.supplierID
group by P.supplierID,S.Address,S.City,S.Region,S.PostalCode,S.Country,S.Phone
having (Count(S.supplierID in (Select supplierID from Products))) > 2;

一个问题,但我不知道是什么。 解释:查询应该创建一个视图,但只能与曾经在“产品”列表中的供应商一起使用。 有人可以帮我吗?

解决方法

似乎您需要重新排列HAVING子句,以返回等于COUNT的相关1值,例如

SELECT P.SupplierID,S.CompanyName,S.ContactName,S.Address + ' ' + S.City + ' ' + S.Region + ' ' + S.PostalCode + ' ' +
       S.Country,S.Phone
  FROM Suppliers S
  JOIN Products P
    ON S.SupplierID = P.SupplierID
 GROUP BY P.SupplierID,S.Address,S.City,S.Region,S.PostalCode,S.Country,S.Phone
 HAVING ( SELECT COUNT(*) FROM Products WHERE SupplierID = S.ID ) = 1