dela Geschrieben 27. September 2011 Teilen Geschrieben 27. September 2011 hallo, ich bins wieder und es geht wieder mal um datenbanken=) Situation: Tabelle ´aktuell´ mit verschiedenen daten wie (name, vorname geb. datum usw.) und 3 timestamps --> update ( datum des letzten updates) gütig_von und gültig_bis. Diese Tabelle ´aktuell´ wird täglich mit einer anderen tabelle verglichen: fall 1) datensatz bleibt gleich => passier nichts. gültig_bis bleibt offen fall 2) datensatz ändert sich => neuer datensatz aus einer anderen tabelle. und beim alten --> gültig_bis = update so sollte es dann aussehen: update gültig_von gültig_bis 11:00 09:00 10:00 1. änderung 11:00 10:00 11:00 2. änderung 11:00 11:00 00:00 also mein Problem dabei ist, dass es nach der 2. änderung so aussieht: update gültig_von gültig_bis 11:00 09:00 11:00 1. änderung 11:00 10:00 11:00 2. änderung 11:00 11:00 00:00 mfg. dela Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 27. September 2011 Teilen Geschrieben 27. September 2011 ah ha und was soll daran falsch sein !? Beschreibe das Problem so, dass man es verstehen und ggf wären Codeauszüge nicht verkehrt Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dela Geschrieben 27. September 2011 Autor Teilen Geschrieben 27. September 2011 das problem ist ja, dass alle einträge in der spalte "gültig_bis" gleich sind.: wegen---> gültig_bis = update was kann ich da für eine where bedingung nehmen um die überschreibung vom ersten gültig_bis zu verhidern ...............................update .......................................................................gültig_von ..................................................................gültig_bis ...............................11:00 ..........................................................................09:00 .............................................................................11:00 1. änderung .......11:00 .........................................................................10:00 .............................................................................11:00 2. änderung ........11:00......................................................................... 11:00 .............................................................................00:00 und ich will eine historie haben: ...............................update .......................................................................gültig_von ..................................................................gültig_bis ...............................11:00 ..........................................................................09:00 .............................................................................10:00 1. änderung .......11:00 .........................................................................10:00 .............................................................................11:00 2. änderung ........11:00......................................................................... 11:00 ............................................................................00:00 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 27. September 2011 Teilen Geschrieben 27. September 2011 Benutze bitte die Code-Tags, das kann kein Mensch lesen. Wie Deine Condition aussehen muss, wird Dir hier auch niemand sagen können, weil der Aufbau Deiner Tabelle (und Deiner Datenbank nicht bekannt sind). Generell: Finde den letzten Datensatz und erzeuge anhand dessen PK eine Condition, die ihn eben nicht enthält. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dela Geschrieben 27. September 2011 Autor Teilen Geschrieben 27. September 2011 wenn ich diesen befehl ausführe : $sql=mysql_query(" UPDATE aktuell SET gültig_bis = now() WHERE personalnummer = '".$row['personalnummer']."'" ); dann wird now() für die ganze spalte, bzw, für alle datensätze gesetzt ! ich möchte aber, dass es nur für einen passiert, für den letzten ! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dela Geschrieben 27. September 2011 Autor Teilen Geschrieben 27. September 2011 kann man sich i-wie auf nur einen datensatz beschränken etwa so: SET gültig_bis = now() aber nur für diesen!! weil es mehrere mit der gleichen personalnummer gibt klappt es nicht mit "where" Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 27. September 2011 Teilen Geschrieben 27. September 2011 kann man sich i-wie auf nur einen datensatz beschränken etwa so Ja anhand des Schlüssels bzw eines passendes Kriterium des Datensatzes Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
streffin Geschrieben 27. September 2011 Teilen Geschrieben 27. September 2011 Ohne wichtige informationen, wie z.b. welches Datenbanksystem dahinter steht und ohne tabellen Struktur : update tabelle set x = y WHERE primaryKey in ( SELECT top 1 primaryKey FROM tabelle order by ??? ) Sollte normal funktionieren. Gruß Sven Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 27. September 2011 Teilen Geschrieben 27. September 2011 Das Commando "top" ist nicht in jedem DBMS enthalten z.B. mySQL oder Postgres kennen "top" nicht. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
streffin Geschrieben 27. September 2011 Teilen Geschrieben 27. September 2011 Was vergleichbares hat afaik fast jedes DBMS, in MySql wärs Limit, in DB2 soweit ich weis auch. Das war nicht als direkt ausführbarern Code gedacht. Davon abgesehn weis ich nichtmal ob die Tabelle eine PK enthält. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 27. September 2011 Teilen Geschrieben 27. September 2011 @streffin: Da gebe ich Dir vollkommen recht :-P Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.