我有 2 个表 1 个产品和 1 个变体表。一个产品可以有 1 个或多个变体。我正在尝试构建一个查询来选择每个产品名称及其价格。价格不是存储在产品表中,而是存储在变体表中。每个变体的价格相同,即产品的价格。这些是表格:
USE [test]
GO
CREATE TABLE [dbo].[variants](
[variantid] [int] NOT NULL,
[productid] [int] NOT NULL,
[price] [decimal](18, 0) NULL
) ON [PRIMARY]
GO
INSERT [dbo].[variants] ([variantid], [productid], [price]) VALUES (1, 1, CAST(10 AS Decimal(18, 0)))
INSERT [dbo].[variants] ([variantid], [productid], [price]) VALUES (2, 1, CAST(10 AS Decimal(18, 0)))
INSERT [dbo].[variants] ([variantid], [productid], [price]) VALUES (3, 2, CAST(12 AS Decimal(18, 0)))
INSERT [dbo].[variants] ([variantid], [productid], [price]) VALUES (3, 2, CAST(2 AS Decimal(18, 0)))
CREATE TABLE [dbo].[products](
[productid] [int] NOT NULL,
[name] [varchar](50) NULL
) ON [PRIMARY]
GO
INSERT [dbo].[products] ([productid], [name]) VALUES (1, N'glove')
INSERT [dbo].[products] ([productid], [name]) VALUES (2, N'tie')
INSERT [dbo].[products] ([productid], [name]) VALUES (3, N'pants')
我试图这样查询它:
select v.price,p.name,* from dbo.products p
join variants v on v.productid=p.productid
where p.productid=1
但随后它返回 productid=1 的所有变体,我如何从仅 1 个变体中“提取”价格以在我的查询中列出此价格,以便它只返回 productid=1 的 1 行?