我正在尝试制作一个两步过滤器,以使用产品类别和产品标签对产品进行排序。
一种产品可以有多个类别和多个标签。
但是,当时只能选择一个类别。在用户选择了一个类别后,我只想显示在所选类别中有产品的标签。
例如: 输入 类别 = 汽车 输出 标签 = 宝马、福特
表:
CREATE TABLE product(
id INT auto_increment primary key,
name varchar(255)
);
CREATE TABLE tags(
id INT auto_increment primary key,
tag_name varchar(255)
);
CREATE TABLE product_tags(
id INT auto_increment primary key,
tag_id INT,
product_id INT
);
CREATE TABLE product_categories(
id INT auto_increment primary key,
category_name varchar(255),
);
CREATE TABLE categories(
id INT auto_increment primary key,
category_id INT,
product_id INT
);
我尝试了几种解决方案,但无法做出一个显示正确组合的查询。
SELECT tags.id,tags.tag_name
FROM tags,product_tags,product_categories
WHERE product_tags.product_id IN (
SELECT product_id
FROM categories
WHERE product_categories.id = (
SELECT id
FROM category
WHERE id = 3)
)
GROUP BY tags.tag_id