Beiträge mit tag1 UND tag2 finden? (über eine Join-Tabelle) Exists / Having / subqueries… What to use?

ch muss eine Abfrage durchführen, um nach mehreren Begriffen zu suchen und zu filter

Ich habe einen Tisch mit Waffen und alle können mehrere Tags haben.Ich möchte in der Lage sein, eine Filteroption für den Benutzer zu erstellen, die nur Waffen mit z. 'tag1' UND 'tag2'.

Bis jetzt
Ich habe sie mit einem @ gefilteGROUP_CONCAT mitHAVING bis jetzt hat das aber leistungsprobleme! Da bin ich gezwungen ein @ zu machGROUP BY w.id Aber ich will machenORDER BY etwas anderes. Und GROUP BY spielt nicht gut mit ORDER BY ....

Ich habe versucht, etwas mit EXISTS (SELECT…) zu erstellen, um nach mehreren Werten filtern zu können. Ich bin mir jedoch nicht sicher, ob ich dies tun soll, wenn sich in der Mitte eine „Join-Tabelle“ befindet. (Also mit 2 linken Joins)

weapons:
id | name
----------
1  | sword
2  | shield

weapon_tag_links:
tag_id  | weapon_id
-------------------
62      | 1
80      | 1
80      | 2
60      | 2

weapon_tags:
tag_id | tag
--------------
60      | red
62      | blue
80      | old

Suchanfrage

SELECT DISTINCT * FROM weapons as w
LEFT JOIN weapon_tag_links AS l ON l.weapon_id = w.id 
INNER JOIN weapon_tags AS t ON l.tag_id = t.tag_id 
WHERE EXISTS (
    ****** Something to go here *******
    WHERE t.tag = ‘blue’
) AND EXISTS (
    ****** Something to go here *******
    WHERE t.tag = ‘old’
)

Mir fehlt nur der Link, den Sie in @ benötigeEXISTS. Aber ich bin mir nicht sicher, wie ich das hinzufügen soll ...

Die Frage
Sag Ich möchte nach einem Eintrag in Waffen suchen, der @ iblue UNDold, (in diesem Fall ein Schwert) Wie mache ich das?

Ich sage nicht, dass ich "EXISTS" verwenden MUSS, aber ich möchte, dass die Suche nach Beiträgen mit bestimmten Tags, die durch @ verbunden sind, optimal funktionierAND!

Antworten auf die Frage(4)

Ihre Antwort auf die Frage