我有以下情況:不知道如何更好地解釋它,但生病嘗試給一些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行,每行只包含一行。什麼是正確的方法來做到這一點。
'WHERE tags.tag_name IN( 'Tag1中', '與Tag2', 'TAG3')'和'GROUP BY(產物塔)'和'HAVING COUNT(tags.tagid)= 3 '。 – Jakumi