【发布时间】:2021-11-30 18:12:20
【问题描述】:
在 sql 方面需要一些帮助。往下看我的sql代码sn-p。
create table product
(
id int auto_increment primary key,
title text null,
stock int default 0 not null,
price float(9,2) default 0.00 not null
);
create table product_property_value
(
id int auto_increment primary key,
product_id int not null,
property_id int not null,
value varchar(255) null
);
create table property
(
id int auto_increment primary key,
code varchar(20) null,
title varchar(50) null
);
我有一条语句,用于从这三个表中选择所有行,并具有漂亮的输出。
SELECT
title,
stock,
price,
(
SELECT GROUP_CONCAT(p.title, ': ', pv.value SEPARATOR ', ')
FROM product_property_value pv
INNER JOIN property p on pv.property_id = p.id WHERE pv.product_id = product.id
) property_values
FROM product;
我的属性表充满了这些数据:
insert into property (id, code, title) values (1, 'color', 'Color');
insert into property (id, code, title) values (2, 'width', 'Width');
insert into property (id, code, title) values (3, 'height', 'Height');
我的 product_property_value 表填充了这些数据(一种产品有一个示例,表有很多):
insert into product_property_value (id, product_id, property_id, value) values (4, 2, 1, 'Green');
insert into product_property_value (id, product_id, property_id, value) values (5, 2, 2, 4);
insert into product_property_value (id, product_id, property_id, value) values (6, 2, 3, 4);
所以主要问题是如何选择仅具有指定值的产品: 选择颜色 =“红色”、宽度 = 4 或宽度 = 5 且高度 = 5 的产品。我需要修改语句或更改它,但无论如何我需要保存美化的输出。欢迎回答,谢谢。
【问题讨论】:
-
您的标签中列出了 3 个单独的 RDBMS。请更新您的标签以反映您正在使用的实际 RDBMS,因为答案可能特定于该平台。
-
提供的示例没有数据返回