这看起来很简单但卡住了。所以让我先分享一下表结构:
产品:
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
)
ProductImages:
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
但我的要求是所有产品默认会显示图像(没有图像)。当状态为1时,仅显示 ProductImages 表中的图像。如果Status = 0,则显示产品但没有图像文本或其他任何内容。这是我应该得到的示例输出:
注意:默认情况下,只显示状态为1的图片,不显示包含产品详细信息的图片。
答案 0 :(得分:1)
我对两个输出中的状态列感到有点困惑,但是如果我理解正确的话,这是一个简单的style
表达式,显示CASE
时"No images"
字符串(表示左侧)加入未找到Status <> 1
的任何图像)否则显示该列的值:
Status = 1
答案 1 :(得分:1)
您可以使用status = 1的情况,然后显示ImageName列,否则为null
$state.go()