【发布时间】:2016-09-26 18:49:38
【问题描述】:
这看起来很简单,但卡住了。所以先分享一下表结构:
产品:
CREATE TABLE [dbo].[Products](
[ID] [int] IDENTITY(1,1) NOT NULL,
[ProductID] [int] NULL,
[CategoryID] [int] NULL,
[ProductName] [nvarchar](100) NULL,
[Details] [nvarchar](max) NULL,
[Price] [float] NULL,
[Stock] [float] NULL
)
产品图片:
CREATE TABLE [dbo].[ProductImages](
[ImageID] [int] IDENTITY(1,1) NOT NULL,
[ProductID] [int] NULL,
[ImageName] [nvarchar](100) NULL,
[ImageDetails] [nvarchar](max) NULL,
[Status] [int] NULL
)
ProductID 是 ProductImages 表中的外键。所以我想要显示所有带有状态 = 1 的图像的产品(ProductImages 表中的状态列)。现在这是一个逻辑。如果我对两个表都执行 INNER 或 LEFT JOIN,那么它将显示状态为 1 的产品,并带有以下查询:
SELECT m.ProductID, m.CategoryID, m.ProductName, m.Details, m.Price,
m.Stock, k.ImageName, k.Status FROM Products m LEFT JOIN ProductImages k
ON k.ProductID = m.ProductID WHERE k.Status = 1
但我的要求是默认情况下所有产品都将显示图像(无可用图像)。只有 ProductImages 表中的图片会在 Status 为 1 时显示。如果 Status = 0,则显示产品但没有图片文本或其他内容。这是我应该得到的示例输出:
注意:只有状态为 1 的图片才会显示,否则默认不显示产品详情的图片。
【问题讨论】:
-
能否附上样本数据?我想知道呈现的输出来自哪个查询。
标签: sql sql-server-2008