0

我正在尝试制作一个两步过滤器,以使用产品类别和产品标签对产品进行排序。

一种产品可以有多个类别和多个标签。

但是,当时只能选择一个类别。在用户选择了一个类别后,我只想显示在所选类别中有产品的标签。

例如: 输入 类别 = 汽车 输出 标签 = 宝马、福特

表:

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
4

2 回答 2

0

试试这个:

select 
distinct(t.tag_name)
from tags t
join product_categories pc on pc.category_name = 'Car'
join categories c on c.category_id = pc.id
join product_tags pt on pt.tag_id = t.id and pt.product_id = pc.id
于 2016-08-23T12:14:32.747 回答
-1

这应该工作正常

select disticnt t.*
from tags t
join product_categories pc on pc.category_name = 'Car'
join categories on c.category_id = pc.category_id and c.product_id = p.id
join product_tags pt on pt.tag_id = t.id and pt.product_id = p.id
于 2016-08-22T12:43:20.370 回答