Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Entwickler>Brauche dringend SQL-Befehl

Brauche dringend SQL-Befehl

jogoto10.08.1310:38
Ich habe in einer MySQL Datenbank ein bisschen Durcheinander angerichtet. Das Problem habe ich analysiert und bevor ich jetzt alles neu mache, kann mir vielleicht jemand mit einem SQL-Befehl aushelfen.
Der sollte folgendermaßen funktionieren:
Schaue in Tabelle A in Feld a. Wenn dort ein Wert (ein Dateipfad) vorhanden, suche in Tabelle B in Feld b nach diesem Wert, nimm die ID des Datensatzes in Tabelle B und ersetze in Tabelle A in Feld a den Wert durch die ID.
Ein leeres Feld a oder eines, in dem schon die ID steht, soll ignoriert werden.
Kann mir da bitte jemand helfen?
0

Kommentare

clown18210.08.1311:54
Mir ist nicht 100% klar geworden, was du machen willst.
Soll überprüft werden ob ein Dateipfad oder eine id im Feld steht und je nach dem entschieden werden?
0
jogoto10.08.1313:57
Früher war der Dateipfad in Tabelle A richtig. Jetzt ist der Dateipfad in Tabelle B ausgelagert und in Tabelle A steht an der alten Stelle nur noch die ID aus Tabelle B. Teilweise hat die Ersetzung funktioniert, teilweise nicht und teilweise stand noch nie etwas in dem Feld. Das Feld kann also leer sein (richtig), eine ID enthalten (richtig) oder einen Pfad (falsch). Der Pfad soll, falls (noch) vorhanden mit der passenden ID aus der neuen Tabelle ersetzt werden.
0
clown18210.08.1314:19
Wenn man davon ausgehen kann, dass in jedem Pfad ein / vorkommt, dann sollte folgendes funktionieren:

UPDATE A SET a=(SELECT id FROM B WHERE b=a) WHERE  a LIKE '%/%'

Am besten vorher ein Backup machen.
0
jogoto11.08.1315:26
Danke! Danke! Danke!
Hat wunderbar funktioniert. Knapp tausend Einträge waren im nu korrekt umgestellt. Übrig blieben noch 35, bei denen mehrere Pfade in einem Feld stehen, da hat das Script natürlich keine Entsprechung gefunden, aber die kann ich schnell von Hand abschreiben.
Ich bin froh, dass ich das mit den tausend nicht machen musste!
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.