Einzelnen Beitrag anzeigen
  #3  
Alt 19.02.2018, 07:56:20
Peter69 Peter69 ist offline
Anfänger
 
Registriert seit: Feb 2018
Alter: 54
Beiträge: 6
AW: Duplikate löschen

Guten Morgen,

vielen Dank für Deine Hilfe und die freundliche Begrüßung.

Ich habe eine Tabelle mit ca. 250 Datensätzen.
Diese Tabelle ist das Ergebnis einer Selektion auf eine Tabelle mit ca. 15.000 Datensätzen.

Das Skript an dem ich gerade arbeite erlaubt dem Benutzer, die 250 Datensätze umzusortieren.
Es wird immer nur ein Benutzer zeitgleich Datensätze umsortieren.
Mein Skript geht aktuell her und macht nach einer Änderung ein Update auf von "pos"

PHP-Code:
if($action == "updateCustomerPos")

  
$counter 1;
  foreach (
$updRecArray as $recordIDValue
  {
    
$q_update $db->query("UPDATE Kunden SET pos = " $counter " WHERE id = " $recordIDValue);
    
$counter++; 
  }
  echo 
'Position gespeichert';

Soweit alles bestens.
Jetzt kam der Wunsch auf zu wissen, welcher Benutzer einen Datensatz verschoben hat.
Daher habe ich mir nachdem Update einen Insertbefehl eingebaut.

PHP-Code:
$q_history $db->query("INSERT INTO otrsplan_history (pos_id, pos, edit_by, edit_time) VALUES ('" $recordIDValue "','" $counter "','" $benutzer "','" $timestamp "')"); 
Dieser erzeugt meinen Log.

Das Problem ist nun:
Bei jeder Änderung schreibt der Insert Befehl 250 Zeilen in die Datenbank.
Auch dann, wenn isch eigentlich gar nix ändert.

Bsp: ich schiebe Pos 2 an Pos 1

Dann schreibt der Insert Befehl 250 Datensätze aber nur bei den ersten beiden hat sich die Position um Vergleich zum letzen Eintrag geändert.
248 Datensätze sind sinnfrei für das Logging.

Ich würde jetzt gerne hergehen und die sinnfreien Daten löschen.

PHP-Code:
Delet from otrsplan_history where "pos je pos_id mit MAX(timestamp) = "pos je pos_id mit MAX(timestamp)-
Das ganze würde ich dann direkt nach dem Insert durchführen.

Sollte mein Ansatz an sich falsch sein, bitte ich um Nachsicht...

Vielen Dank und LG

Peter
Mit Zitat antworten