【发布时间】:2017-07-31 08:32:17
【问题描述】:
我有三个表 Product、MapCatProduct、Category。
表定义:
表 1:产品
Column 1: int ProductID (PK)
Column 2: nvarchar(255) Name
表 2:MapCat 产品
Column 1: int MapCatProductID (PK)
Column 2: int ProductID(FK)
Column 3: int CategoryID(FK)
映射表:类别
Column 1: int CategoryID (PK)
Column 2: nvarchar(255) Name
我想在输入ProductID时选择Product表参数和categoryID这个参数等于所有结果。
例如: (InputParameters) ProductID = 14
结果:
产品 ID = 14 类别 ID = 2
产品 ID = 34 类别 ID = 2
产品 ID = 63 类别 ID = 2
注意: 一个 productID 可能有“n”个 CategoryID
我的代码是:
SELECT p.Id,p.Name FROM Product p
WHERE p.Id = @Id --input parameter
UNION
(SELECT TOP 5 p.Id,p.Name FROM Product p
INNER JOIN MapCatProduct mcp
ON p.Id = mcp.ProductId
INNER JOIN Category c
ON c.Id = mcp.CategoryId)
【问题讨论】:
-
查看有关 SQL
JOINs 的一些信息...试试 here -
嗨@gbn。我想使用工会但不工作。选择产品表并联合选择两个表(MapCatProduct,Category)。
-
@Awatt UNION 操作不同于使用结合来自两个或多个表的列的连接。请给我们看一个代码示例。
标签: sql select foreign-keys