Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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

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.

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 !

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"

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

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. ;)

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.