Ich implementiere ein Tagging-System für eine Website. Es gibt mehrere Tags pro Objekt und mehrere Objekte pro Tag. Dies wird erreicht, indem eine Tabelle mit zwei Werten pro Datensatz, einer für die IDs des Objekts und des Tags, aufrechterhalten wird.SQL-Viele-zu-Viele-Abgleich
Ich bin auf der Suche nach einer Abfrage, um die Objekte zu finden, die eine bestimmte Menge von Tags entsprechen. Angenommen, ich folgende Daten hatte (in [object] -> [tags] * Format)
apple -> fruit red food
banana -> fruit yellow food
cheese -> yellow food
firetruck -> vehicle red
Wenn ich will, übereinstimmen (rot), sollte ich Apfel und Feuerwehrauto bekommen. Wenn ich zusammenpassen möchte (Obst, Essen) sollte ich (Apfel, Banane) bekommen.
Wie schreibe ich eine SQL-Abfrage tun, was ich will?
@ Jeremy Ruten,
Vielen Dank für Ihre Antwort. Die verwendete Notation wurde verwendet, um einige Beispieldaten zu geben - meine Datenbank hat eine Tabelle mit 1 Objekt-ID und 1 Tag pro Datensatz.
Zweitens ist mein Problem, dass ich alle Objekte erhalten muss, die alle Tags übereinstimmen. Ersetzen Sie Ihr OR für ein UND wie folgt:
SELECT object WHERE tag = 'fruit' AND tag = 'food';
Ergibt keine Ergebnisse beim Ausführen.
Welche RDBMS verwenden Sie? Wie benötigen Sie das implementiert? eine gespeicherte Prozedur? Wie möchten Sie Parameter übergeben? Oder werden Sie die SQL dynamisch außerhalb des DBMS komponieren? In diesem Fall, mit welcher Programmiersprache? – van