Aktives Mitglied
Hallo zusammen.
Ich arbeite gerade an einem eigenen kleinen CMS und habe ein Problem mit mySQL. Kurz zur Ausgangssituation:
Artikel können mit Tags versehen werden, die einfach über ein Input-Feld als kommaseparierte Liste eingegeben werden und in die Datenbanktabelle tags (2 Spalten: id,title) geschrieben werden (sofern sie nicht schon existieren). Die Beziehungen Artikel-Tags werden in der Tabelle article_tags (id,articleId,tagId) gespeichert.
Da es vorkommen kann, dass durch Rechtschreibfehler, Abkürzungen etc. ähnliche Tags in der Datenbank stehen, soll im Adminbereich die Möglichkeit bestehen, einen Tag zu löschen, indem er in einen anderen "überführt" wird. Also der Tag "afpel" gelöscht und jeder zugehörige Artikel dem Tag "apfel" zugeordnet wird.
Bis jetzt habe ich dafür folgende Abfrage verwendet:
Das Problem dabei ist: Ist ein Artikel bereits mit dem Tag 'apfel' versehen, steht die Beziehung zwei mal in der Datenbank, was ich vermeiden möchte.
Ich bin mit meinem Latein an dem Punkt wirklich am Ende. Meine einzige Idee war, nach dem UPDATE in einer Zweiten Abfrage mögliche Duplikate zu eliminieren aber ich frage mich, ob es da nicht eine elegantere Lösung gibt?
Viele Grüße,
Mereel
Ich arbeite gerade an einem eigenen kleinen CMS und habe ein Problem mit mySQL. Kurz zur Ausgangssituation:
Artikel können mit Tags versehen werden, die einfach über ein Input-Feld als kommaseparierte Liste eingegeben werden und in die Datenbanktabelle tags (2 Spalten: id,title) geschrieben werden (sofern sie nicht schon existieren). Die Beziehungen Artikel-Tags werden in der Tabelle article_tags (id,articleId,tagId) gespeichert.
Da es vorkommen kann, dass durch Rechtschreibfehler, Abkürzungen etc. ähnliche Tags in der Datenbank stehen, soll im Adminbereich die Möglichkeit bestehen, einen Tag zu löschen, indem er in einen anderen "überführt" wird. Also der Tag "afpel" gelöscht und jeder zugehörige Artikel dem Tag "apfel" zugeordnet wird.
Bis jetzt habe ich dafür folgende Abfrage verwendet:
PHP:
UPDATE article_tags SET tagId = $newtagid WHERE tagId = $oldtagid
DELETE FROM tags WHERE id = $oldtagid
Ich bin mit meinem Latein an dem Punkt wirklich am Ende. Meine einzige Idee war, nach dem UPDATE in einer Zweiten Abfrage mögliche Duplikate zu eliminieren aber ich frage mich, ob es da nicht eine elegantere Lösung gibt?
Viele Grüße,
Mereel
Zuletzt bearbeitet: