PDA

Vollständige Version anzeigen : Alle bis auf einen doppelten Eintrag per Abfrage (SQL) löschen?


Matt B.
07.10.2002, 00:57
Hallo,

ich habe eine Datenbank in der das Datum und der Name eines jeweilegen DB Benutzers gespeichert wird sobald er die DB aufruft. Da dies natürlich mehrfach an einem Tag passieren kann, aber ich nur eine Aktivität benötige, möchte ich die übrigen Eintragungen löschen lassen.

Habe es mit "In (SELECT [Name] FROM [Besucher] As Tmp GROUP BY [Name] HAVING Count(*)>1 )" aber dann listet er ja alle auf. Ich muss aber einen Eintrag pro Tag behalten!!!

...und schön wäre es natürlich, wenn das ganze in einer Löschabfrage verpackt wäre!

Hat eventuell jemand einen Tipp? VIELEN DANK SCHONMAL!

Gruß
Matt

MarioR
07.10.2002, 06:33
Hallo Matt,

hast Du in Deiner Tabelle ein Feld, mit dem man die einzelnen DS unterscheiden kann (ID, Anmeldezeit, ...)?

Ist das nicht der Fall, dann füge so ein Feld ein, sonst wird das Löschen etwas aufwendig (Recordset).

KHS
07.10.2002, 07:27
Evtl. ein Ansatz:
<a href="http://www.access-guru.de/" target="_blank">http://www.access-guru.de/</a>
im Suchfeld "duplikate" eingeben.

Matt B.
07.10.2002, 13:53
@Mario
Ja, ich habe ein Autozähler, dann den Namen der Person und das Datum und Uhrzeit des Einloggens!

Also wenn er sich am 07.10.02 dreimal einlogged, will ich am abend dort nur einen Eintrag stehen haben anstatt drei!

Danke!

@KHS
Danke für den Tipp!

MarioR
07.10.2002, 14:30
Wenn Du nichts Passendes findest, dann probier mal folgenden SQL-Code für die Löschabfrage (ungetestet / ID ist das Autowert-Feld):
DELETE *
FROM DeineTabelle
WHERE ID NOT IN
(SELECT Min(ID)
FROM DeineTabelle As tblTemp
WHERE tblTemp.MA=DeineTabelle.MA
AND CLng(tblTemp.DatZeit)=CLng(DeineTabelle.DatZeit))
Speicherst Du Datum und Zeit in getrennten Feldern, dann kannst Du die Spielerei mit CLng weglassen.

Edit:
Kleine Korrektur - wenn Datum und Zeit in einem Feld sind, dann ersetze CLng durch Int.

[ 07. Oktober 2002: Beitrag editiert von: MarioR ]</p>