У меня есть следующий сценарий: Не знаю, как это объяснить, но старайтесь дать некоторые данные sql и действительный сценарий.Как совместить несколько строк, используя левое внутреннее соединение в mysql
У меня есть таблица, в которой есть продукты, в которых хранятся теги продукта, и которые сохраняют те, которые добавлены в продукт. Я могу добавить несколько тегов к одному продукту.
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_tag(
id INT auto_increment primary key,
tag_id INT,
product_id INT
);
SQL-запрос с использованием внутреннего соединения дает мне:
select
product.name,
tags.tag_name
from product
INNER JOIN product_tag ON product.id = product_tag.product_id
INNER JOIN tags ON product_tag.tag_id = tags.id
Результат дает мне:
Product 1 | Tag1
Product 1 | Tag2
Product 1 | Tag3
Product 2 | Tag1
Product 2 | Tag3
Я хочу, чтобы сделать запрос, проверить, если продукт 1 имеет tag1, tag2 и tag3 имеют все 3 метки. Представьте, что пользователь на переднем конце выбирает все древовидные теги, а затем я хочу показать продукт, на котором есть все теги дерева, на которые он ссылается. Но я получаю 3 строки, и каждая строка содержит только одну строку в этом примере. Каким будет правильный способ сделать это.
'ГДЕ tags.tag_name IN ('Tag1', 'tag2', 'Tag3') и' GROUP BY (столбцы продукта) и 'HAVING COUNT (tags.tagid) = 3 '. – Jakumi