Mysql JSON Select?

1 Antwort

Vom Beitragsersteller als hilfreich ausgezeichnet

Die Art, wie du die Informationen in deiner Datenbank speicherst, ist nicht gut. Jede Spalte sollte nur einen eindeutigen Wert beinhalten, nicht mehrere. Dann würde auch die Suche leichter fallen.

Zunächst würde ich eine Tabelle tags mit einer Spalte name anlegen. In die trägst du deine Tags (als jeweils einzelne Datensätze) ein. Jeder Tagname existiert also nur einmal in der Datenbank.

Die Spalte tags aus deiner Tabelle json_pics sollte ein Fremdschlüssel werden, der auf die name-Spalte der tags-Tabelle referenziert. Den Spaltennamen würde ich zu tag umbenennen.

Wenn du nun einen Eintrag XY hast, dem zwei Tags A, B zugehörig sind, werden in der Datenbanktabelle zwei Datensätze angelegt. Einmal mit einer Referenz auf Tag A, einmal mit Tag B.

Der Suchquery:

SELECT json_pics.owner, json_pics.picture
FROM json_pics
INNER JOIN tags ON json_pics.tag = tags.name
WHERE tags.name = "tag4"