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 zusammen ich habe da ein kleines SQL Problem in Access und ich hoffe ihr könnt mir da helfen. :)

Es geht um doppelte Einträge, wie kann ich die rausfiltern, bzw. löschen?

 

Was ich versuche zu erreichen wörtlich formuliert:

Zeige aus Tabelle 1 alle Spalten(Also A,B,C,usw.) an, aber zeige nur 1 Zeile von den doppelten an.

A                     B            C             D          E                    F
10118    10130    10002    10005    3    01.01.2008
10119    10147    10002    10005    4    01.01.2008
10157    10340    10021    10038    2    02.05.2016
10158    10341    10019    10037    1    16.02.2012
10159    10341    10019    10037    1    16.02.2012
10160    10341    10019    10037    1    16.02.2012
10161    10341    10019    10037    1    16.02.2012
10162    10341    10019    10037    1    16.02.2012
10163    10341    10019    10037    1    16.02.2012

 

Danke schon mal für die Hilfe.

Bearbeitet von manu1214

  • Autor
vor 10 Minuten schrieb Enno:

???
In deinem Beispiel ist keine Zeile doppelt vorhanden.

Wie soll also dein Ergebnis genau aussehen?

Also in Spalte B steht untereinander 10341, es soll nur noch eine Zeile mit 10341 geben, das war natürlich nur ein Beispiel es gibt noch weitere Doppelte.

  • Autor
vor 16 Minuten schrieb MartinSt:

Sollen die rot markierten Blöcke also einfach nicht ausgegeben werden?
grafik.png.3d7e5a9c471259a659f138d21c412d87.png

Also wenn in Spalte B doppelte Werte(oranger Rahmen) auftauchen sollen alle Zeilen bis auf eine erhalten bleiben(lösche alle Zeilen roter Rahmen).

 

e647de-1588870270.jpg

Bearbeitet von manu1214

Das ist nicht möglich.
Weil welcher Wert von A soll denn angezeigt werden? Es sind ja in den 5 Zeilen unterschiedliche Werte für A vorhanden.

 

Soll das System nen Würfel nehmen und auswürfeln?

Ich würde mal behaupten, dass man es mit SQL Window Funktionen lösen kann, wenn die mehrfachen Werte in jeder Spalte direkt aufeinander folgen.  Ab dem 2. ff. Wert könnte man dann NULL ausgeben.
Aber Access kann sicherlich keine Window Funktionen.

  • Autor

Also es geht um die Fluke DMS Software, die eben die Messdaten in der MdB Datenbank ablegt, diese habe ich nun mit Access geöffnet und möchte die doppelten Datensätze rauslöschen.

@Enno

Wegen dem Auswürfeln:

Und wenn nun immer der Datensatz( Zeile) mit der niedrigsten Spalte A Nummer behalten wird?

"Suche nach doppelten Einträgen in Spalte B, wenn das System welche gefunden hat, lösche alle Zeilen dieses Spalte B Wertes bis auf die Zeile die den kleinsten Wert in Spalte A hat"

 

Bearbeitet von manu1214

Wenn die Tabelle in einer oder mehreren Spalten keine doppelten Werte haben soll, dann löst man das mit Constraints auf die jeweiligen Spalten.

Bau dir eine entsprechende Table die Duplikate verhindert und inserte die Rohdaten von oben per Function, Trigger o.ä., wobei jeweils geprüft wird, ob Konflikte auftreten.

Das sollte auch per insert into ...where not exist  gehen.

Bearbeitet von MartinSt

Oder du versuchst mal dich in das Thema Group By und Aggregatfunktionen einzuarbeiten.

 

der Befehl könnte auch so aussehen:

 

select min(A), B, C, D, E, F from Tabelle group by B, C, D, E, F

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.