MS-Office-Forum
Google
   

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > SQL
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 13.11.2017, 11:30   #1
DN_Eagle
Neuer Benutzer
Neuer Benutzer
Standard T-SQL : MSSQL 2008 - Dopplete Datensätze löschen

Hallo zusammen,

ich habe eine Tabelle in der die Stempelzeiten der Mitarbeiter gespeichert werden. Nun ist es so, dass schon mal doppelte Datensätze (bis auf die ID) vorhanden sind. Mit der folgenden Abfrage kann ich sehen wie oft einige Datensätze vorhanden sind.

PHP-Code:

SELECT COUNT(*), terminaldam_idbuch_artdatumuhrzeitpersonal_id
FROM stempelzeiten
GROUP BY terminal
dam_idbuch_artdatumuhrzeitpersonal_id
HAVING COUNT
(*) > 1
AND datum '08.11.2017' 
Ergebnis:

3 001 000004295513831 1 2017-11-08 00:00:00.000 1900-01-01 05:58:47.000 507
3 001 000004295518770 0 2017-11-08 00:00:00.000 1900-01-01 15:30:10.000 1004
3 001 000004295518770 1 2017-11-08 00:00:00.000 1900-01-01 06:48:56.000 1004
3 001 000004295523333 1 2017-11-08 00:00:00.000 1900-01-01 05:54:48.000 654
3 001 000004295525526 0 2017-11-08 00:00:00.000 1900-01-01 15:30:04.000 683
3 001 000004295525526 1 2017-11-08 00:00:00.000 1900-01-01 06:49:08.000 683
3 001 000004295525756 0 2017-11-08 00:00:00.000 1900-01-01 15:36:23.000 1007
3 001 000004295525756 1 2017-11-08 00:00:00.000 1900-01-01 06:36:58.000 1007


wie bekomme ich es nun hin, wenn es 3 Datensätze mit identischem Inhalt (bis auf die ID) gibt, zwei davon zu löschen so dass nur noch einer übrig bleibt?

Vielen Dank für Eure Hilfe im Voraus.

__________________

Gruß
DN_Eagle

Acrylbilder & Filzstiftzeichnungen
http://www.farbvulkan.de
DN_Eagle ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.11.2017, 22:36   #2
hcscherzer
MOF Guru
MOF Guru
Standard

Ob das tatsächlich mit einem einzigen SQL Befehl geht?
Ich bin nicht sicher.

Ich würde es sequentiell, also in einer StoredProcedure lösen, mit einem Cursor, der durch die Datensätze iteriert. Ist das Zufall, dass alle mehrfachen genau 3 mal vorkommen?

Und es wäre schon interessant zu wissen, warum die Erfassung-Software so einen Schwachsinn überhaupt zulässt. Also da würde ich mehr >Energie hineinstecken, das abzustellen.

__________________

Freundlichen Gruß
Hans-Christian
-----------------------------------------
Oft erwünscht, selten beachtet: nach Erledigung des Problems den Thread als erledigt zu markieren
-----------------------------------------
Ich möchte nur Mitglied in einem Verein sein, der Leute wie mich nicht als Mitglied aufnimmt (Groucho Marx).
-----------------------------------------
Ab sofort regelmässig: MOF Stammtisch in Bremen. Näheres hier.
hcscherzer ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.11.2017, 23:58   #3
ebs17
MOF Guru
MOF Guru
Standard

Zitat:

Ist das Zufall, dass alle mehrfachen genau 3 mal vorkommen?

In der gezeigten Datenmenge gibt es kein einziges Duplikat. Vermutlich hat die identische Vervielfachung besondere Gründe (unbeabsichtigter CROSS JOIN o.ä.).

Zitat:

Ob das tatsächlich mit einem einzigen SQL Befehl geht?

Wenn man will, schon:
Code:

DELETE 
FROM 
   stempelzeiten AS S 
WHERE 
   EXISTS 
      (
         SELECT 
            NULL 
         FROM 
            stempelzeiten AS X 
         WHERE 
            X.ID < S.ID 
               AND 
            X.terminal = S.terminal 
               AND 
            X.dam_id = S.dam_id 
               AND …
      )
Die Vervollständigung der Schlüsselvergleiche ist sicher eigenlösbar.

Im Ergebnis verbleibt je Duplikatgruppe der Datensatz mit der kleinsten ID.

__________________

Ein freundliches Glück Auf!

Eberhard

Abfrageperformance ist kein Geheimnis
SQL ist leicht: {0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}
Dein Dankeschön: DBWiki=>Spende
ebs17 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.11.2017, 08:53   #4
DN_Eagle
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

@hcscherzer
Der Hintergrund ist folgender:
Unsere Zeiterfassung wird mit dem TR515 Tool von GigaTMS gemacht. Dieses Tool speichert die Stempelzeiten der Mitarbeiter in eine TXT Datei auf dem Server.
Über ein PHP Script lese ich diese Datei aus und speichere die Daten in eine Tabelle im SQL-Server. Nun kann es vorkommen, dass von dem Terminal die Stempelzeiten doppelt oder auch dreifach in die TXT Datei abgespeichert werden, so dass beim Übertragen in den SQL-Server ich doppelte oder dreifache (bis auf die ID) Datensätze habe. Warum das TR515 Tool manchmal diesen Fehler macht habe ich noch nicht gefunden. Nun dachte ich, dass im PHP Script nach der Übertragung noch eine weitere SQL Anweisung folgt die mir die doppleten Einträge wieder löscht, so dass nur noch ein gültiger Eintrag übrig bleibt.
Zusätzlich überlege ich aber gerade, dass PHP Script so zu programmieren, dass die doppelten Einträge erst gar nicht im SQL-Server landen.

@ebs17
Vielen Dank für Deinen Tipp.
In der gezeigten Datenmenge sieht man in der ersten Spalte das dieser Datensatz z.B. 3x vorkommt. Dein SQL Statement werde ich aber mal aufgreifen und probieren ob ich damit Erfolg habe.

Nochmals vielen Dank.

__________________

Gruß
DN_Eagle

Acrylbilder & Filzstiftzeichnungen
http://www.farbvulkan.de
DN_Eagle ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.11.2017, 07:58   #5
hcscherzer
MOF Guru
MOF Guru
Standard

Zitat: von Eberhard

In der gezeigten Datenmenge gibt es kein einziges Duplikat.

Das ist ja auch bereits das Ergfebnis der Aggregation.

__________________

Freundlichen Gruß
Hans-Christian
-----------------------------------------
Oft erwünscht, selten beachtet: nach Erledigung des Problems den Thread als erledigt zu markieren
-----------------------------------------
Ich möchte nur Mitglied in einem Verein sein, der Leute wie mich nicht als Mitglied aufnimmt (Groucho Marx).
-----------------------------------------
Ab sofort regelmässig: MOF Stammtisch in Bremen. Näheres hier.
hcscherzer ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:43 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Copyright ©2000-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.