Ich habe das folgende Szenario: Nicht sicher, wie es besser erklären, aber krank versuchen, einige SQL-Details und ein gültiges Szenario zu geben.Wie in mehreren Zeilen mit linken inneren Join auf mysql
Ich habe eine Tabelle, die Produkte haben, eine, die die Produkt-Tags hält, und eine, die diejenigen zu einem Produkt hinzugefügt speichert. Ich kann einem Produkt mehrere Tags hinzufügen.
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
);
Die SQL-Abfrage mit INNER JOIN gibt mir:
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
Das Ergebnis gibt mir:
Product 1 | Tag1
Product 1 | Tag2
Product 1 | Tag3
Product 2 | Tag1
Product 2 | Tag3
ich eine Abfrage machen wollen, die überprüfen, ob Produkt 1 tag1 haben, tag2 und tag3 haben alle 3 Tags angehängt. Stellen Sie sich vor, der Benutzer am Front-End wählt alle Baum-Tags aus, dann möchte ich das Produkt zeigen, auf das alle Baum-Tags verweisen. Aber ich bekomme 3 Zeilen und jede Zeile enthält nur eine Zeile in diesem Beispiel. Was wäre der richtige Weg, dies zu tun?
'WHERE tags.tag_name IN ('Tag1', 'Tag2', 'Tag3') 'und' GROUP BY (Produkt Spalten)' 'und HAVING COUNT (tags.tagid) = 3 '. – Jakumi