Hallo zusammen,
ich habe ein PHP/SQL-Problem und finde leider keine Lösung, weil mir wahrscheinlich wieder das richtige Stichwort fehlt. Zur Beschreibung:
Ich möchte gern Daten (sagen wir mal Kontaktdaten) in einer Tabelle anlegen. Der Einfachheit halber: id, Vorname, Nachname, Ort. Nun möchte ich, dass ich diese Daten ändern kann (Name oder Ort ändern sich), ich möchte die bisherigen Daten aber nicht per UPDATE überschreiben, sondern mit INSERT einen neuen Datensatz anlegen, da ich später auf frühere Daten zurückgreifen muss. Daher habe ich eine weitere Spalte eingeführt: Vorgänger. In dieser wird die ID des Vorgängers gespeichert. Wenn also Max Mustermann mit der id 3 in Düsseldorf wohnt und nach Hamburg zieht, bleibt der Eintrag 3 erhalten, es wird aber ein neuer erstellt mit 123, Max Mustermann, Hamburg, Vorgänger 3. Wenn es ein neuer Kontakt ist, steht bei Vorgänger eben NULL. Nun möchte ich den Datensatz zu Max Mustermann inkl. der gesamten Historie abrufen (da sich der Name ja ändern kann, scheidet WHERE Vorname=Max AND Nachname=Mustermann) aus, sondern ich frage nach der id = 3 ab, möchte nun aber, dass mir auch der Eintrag mit id=123 ausgegeben wird, der ja in der Spalte Vorgänger die 3 hat (und ggf. auch noch ein anderer Eintrag, der als Vorgänger die 123 hat, falls Max Mustermann noch einmal umzieht).
Nun könnte ich natürlich die ganze Tabelle abrufen und den ganzen Spaß in php ordnen, ich hoffe aber, dass es hierfür eine SQL-interne Lösung gibt, die das einfacher macht, ohne für jeden Nachfolgeeintrag eine neue Abfrage mit neuer id stellen zu müssen.
Gibt es eine Methode, so etwas in SQL zu implementieren?
Beste Grüße!
ich habe ein PHP/SQL-Problem und finde leider keine Lösung, weil mir wahrscheinlich wieder das richtige Stichwort fehlt. Zur Beschreibung:
Ich möchte gern Daten (sagen wir mal Kontaktdaten) in einer Tabelle anlegen. Der Einfachheit halber: id, Vorname, Nachname, Ort. Nun möchte ich, dass ich diese Daten ändern kann (Name oder Ort ändern sich), ich möchte die bisherigen Daten aber nicht per UPDATE überschreiben, sondern mit INSERT einen neuen Datensatz anlegen, da ich später auf frühere Daten zurückgreifen muss. Daher habe ich eine weitere Spalte eingeführt: Vorgänger. In dieser wird die ID des Vorgängers gespeichert. Wenn also Max Mustermann mit der id 3 in Düsseldorf wohnt und nach Hamburg zieht, bleibt der Eintrag 3 erhalten, es wird aber ein neuer erstellt mit 123, Max Mustermann, Hamburg, Vorgänger 3. Wenn es ein neuer Kontakt ist, steht bei Vorgänger eben NULL. Nun möchte ich den Datensatz zu Max Mustermann inkl. der gesamten Historie abrufen (da sich der Name ja ändern kann, scheidet WHERE Vorname=Max AND Nachname=Mustermann) aus, sondern ich frage nach der id = 3 ab, möchte nun aber, dass mir auch der Eintrag mit id=123 ausgegeben wird, der ja in der Spalte Vorgänger die 3 hat (und ggf. auch noch ein anderer Eintrag, der als Vorgänger die 123 hat, falls Max Mustermann noch einmal umzieht).
Nun könnte ich natürlich die ganze Tabelle abrufen und den ganzen Spaß in php ordnen, ich hoffe aber, dass es hierfür eine SQL-interne Lösung gibt, die das einfacher macht, ohne für jeden Nachfolgeeintrag eine neue Abfrage mit neuer id stellen zu müssen.
Gibt es eine Methode, so etwas in SQL zu implementieren?
Beste Grüße!
Kommentar