你提到了一个外键,但你没有包含它的定义。它在您的示例中的两个表之间吗?如果是这样,哪些列是关键?产品尺寸是关键吗?如果是这样,那么您的问题没有多大意义,因为两个表中的值相同。
您的意思是说产品大小是否可能存储在单独的表中而不是 T_Product 表中?在这种情况下,您将需要 T_ProductSize 表中的代码,而不是 T_Product 中的 ProductSize(我也可以建议您将其称为“ProductSizeCode”或更好的“ProductSizeId”或类似名称而不是“代码”吗?简单地称为代码的列可以非常混乱,因为您没有简单的方法知道该值在哪个表中)。此外,您应该始终在每个表上创建一个主键:没有外键就不能拥有外键。它们不必是集群的,这取决于您搜索表的方式,但我在此示例中使用集群 PK。这会给你这样的东西:
CREATE TABLE [dbo].[T_Product](
[ProductID] [int] IDENTITY(1,1) NOT NULL,
[PartNo] [nvarchar](255) NULL,
[CategoryID] [int] NULL,
[MaterialID] [float] NULL,
[WireformID] [float] NULL,
[ProductName] [nvarchar](50) NULL,
[ProductSizeId] [int] NOT NULL,
[ProductLength] [varchar](20) NULL,
[ProductActive] [bit] NULL,
[ProductImage] [varchar](60) NULL
CONSTRAINT [PK_T_Product] PRIMARY KEY CLUSTERED
(
[ProductID] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[T_ProductSize](
[ProductSizeId] [int] IDENTITY(1,1) NOT NULL,
[ProductSize] [nvarchar](50) NULL,
[Length] [nchar](20) NULL
CONSTRAINT [PK_T_ProductSize] PRIMARY KEY CLUSTERED
(
[ProductSizeId] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO
--Now add your foreign key to T_Product.
ALTER TABLE [T_Product] WITH NOCHECK ADD CONSTRAINT [FK_Product_ProductSize] FOREIGN KEY([ProductSizeId])
REFERENCES [T_ProductSize] ([ProductSizeId])
GO
ALTER TABLE [T_Product] CHECK CONSTRAINT [FK_Product_ProductSize]
GO
现在,要检索您的产品以及产品尺寸,请使用以下内容:
SELECT p.[ProductID], p.[PartNo], p.[CategoryID], p.[MaterialID], p.[WireformID], p.[ProductName],
ps.[ProductSize], ps.[Length], p.[ProductLength], p.[ProductActive], p.[ProductImage]
FROM [T_Product] p
INNER JOIN [T_ProductSize] ps
ON ps.[ProductSizeId] = p.[ProductSizeId]
如果我对您的理解正确,那么这就是我认为您所追求的。如果没有,那么再解释一下你需要什么,我会再试一次。