如何在sql server中获得存在于多个类别的产品



我有3个表,分别是product, category和productTocategory

现在我的要求是我想检查存在于多个类别中的产品。

我没有得到正确的t-sql格式。

谁能帮我建立查询,下面是我的表结构

  1. 产品表包含所有生产信息。(ProductId, Name, Description…)
  2. 类别表包含类别和产品信息(CategoryId, Name等)
  3. ProductToCategory有产品和类别信息(ProductToCategoryID, CategoryID, ProductID)

必须聚合多对多连接表。然后,您可以以任意数量的方式使用它来获取所需的相关产品信息。

例如:

CREATE TABLE Product (ProductId INT, Name VARCHAR(10))
CREATE TABLE Category(CategoryId INT, Name VARCHAR(10))
CREATE TABLE ProductToCategory (ProductToCategoryID INT, CategoryID INT, ProductID INT)
GO
INSERT INTO Product VALUES (1,'prod_1'),(2,'prod_2')
INSERT INTO Category VALUES (1,'cat_1'),(2,'cat_2')
INSERT INTO ProductToCategory VALUES (0,1,1),(1,2,1),(1,1,2)
GO 
SELECT p.* 
      ,a.CatCount
  FROM Product p
       INNER JOIN (
         SELECT ProductID 
               ,COUNT(CategoryId) CatCount
           FROM ProductToCategory 
          GROUP BY ProductID 
         HAVING COUNT(*) > 1
        ) a ON p.ProductId = a.ProductId
GO
DROP TABLE Product 
DROP TABLE Category
DROP TABLE ProductToCategory

最新更新