Ich suche nach einer Möglichkeit, eine Abfrage zu erstellen, um Folgendes zu tun:
Betrachten wir 3 Tabellen:
- Produkte: Liste der Produkte
- Tags: Liste der Tags
- tag_ties: Tabelle, mit der ein Tag einem Produkt zugeordnet wird
Betrachten wir diese Struktur für jede Tabelle:
Produkte:
- id (int, Autoincrement)
- Name (Varchar, Name des Produkts)
Stichworte:
- id (int Autoincrement)
- label (varchar, label des tag)
Tag_ties:
- id (int, Autoincrement)
- tag_id (int, Verweis auf eine Tag-ID)
- ref_id (int, Verweis auf eine Produkt-ID)
Was ich möchte:
Erhalten Sie beispielsweise alle Produkte, die mit den Tags ID 10, 11 und 12 gekennzeichnet sind.
Diese Abfrage funktioniert nicht, da sie die Produkte mit mindestens einem der Tags zurückgibt:
select
p.name as name,
p.id as id
from
products p inner join tag_ties ties
on
p.id=ties.ref_id
where
ties.ref_id=p.id and
ties.tag_id in (10,11,12)
group by
p.id
order by
p.name asc