![]() |
Datenbank: SQLite • Version: 3.x • Zugriff über: UniDac
Dublettencheck über mehrere Spalten?
Hi,
ich kann ja mit folgender SQL-Abfrage Dubletten in einer Spalte rausbekommen:
Code:
Wie mache ich das aber bei einer Prüfung über mehrere Spalten?
Select *
from contacts where lastname in( select lastname from contacts group by lastname having count(*) > 1) order by lastname; Viele Grüße .... |
AW: Dublettencheck über mehrere Spalten?
Im Subquery alle relevanten Spalten abfragen und gruppieren, wenn ich nicht irre.
|
AW: Dublettencheck über mehrere Spalten?
SELECT *
FROM Tabelle WHERE ID NOT IN ( SELECT Min(ID) FROM Tabelle GROUP BY Feld_1, Feld_2, Feld_n ); Das listet dir alle Kopien auf, jedoch nicht die Originale (die mit der geringsten ID). Vlt. passt es ja für deinen Anwendungszweck. |
AW: Dublettencheck über mehrere Spalten?
Code:
gegf. mit Soundex o.ä.
Select Name,Vorname,Strasse,Count(*)
from tabelle Group by Name,Vorname,Strasse Having Count(*)>1 sorry not sorgfältig genug gelesen
Code:
Select * from Adressen t
join ( Select Name,Vorname,Strasse,Count(*) as Anz from Adressen Group by Name,Vorname,Strasse Having Count(*)>1 ) a on a.Name=t.Name and a.Vorname=t.Vorname and a.Strasse=t.Strasse order by t.name,t.Vorname,t.Strasse |
AW: Dublettencheck über mehrere Spalten?
:cheer: Danke euch. Bummi's has won :mrgreen:
|
AW: Dublettencheck über mehrere Spalten?
Hi,
jetzt brauche ich noch mal einen Denkanstoss. Alle gefundenen Datensätze besitzen ein modified-Timestamp. Ist es möglich direkt aus der Query heraus den oder die älteren Datensätze mit einem Flag zu versehen, oder muss ich das über das Programm machen? Viele Grüße ... |
AW: Dublettencheck über mehrere Spalten?
Meine Abfrage liefert dir ja alle doppelten zurück, außer den ältesten (oder neusten, wenn du Max(ID) anstatt Min(ID) nutzt). Wenn du jetzt das Select in ein Update wandelt, hast du doch, was du willst, oder? :-D
|
AW: Dublettencheck über mehrere Spalten?
Hi,
nein. Zuerst möchte ich alle Datensätze haben, die irgenwie doppelt vorkommen (verwende dazu Bummis Code). Jetzt möchte ich noch Folgendes erreichen: Zitat:
|
AW: Dublettencheck über mehrere Spalten?
Ja?! Und da meine Abfrage alle Datensätze außer dem neusten liefern (wobei ich das ja an der ID festmache, die Zeit ginge ggf. auch, sofern sie eindeutig ist), kannst du diese Datensätze ändern, wenn du das Select- zu einem Update-Statement machst ...
|
AW: Dublettencheck über mehrere Spalten?
Hi,
es sollten aber trotzdem alle Datensätze (auch die Neusten) auf der Oberfläche angezeigt werden. Bei dir würde auch nur der ältere Datensatz und nicht alle älteren Datensätze angezeigt werden, oder verstehe ich dich da falsch :gruebel: Viele Grüße ... |
AW: Dublettencheck über mehrere Spalten?
Willst du jetzt das Flag in der Datenbank setzen oder nur auf der Oberfläche, damit der Benutzer es sieht? :shock:
|
AW: Dublettencheck über mehrere Spalten?
Hi,
auf der Oberfläche, aber wenn möglich möchte ich das schon mit der Query auswerten. Wie gesagt, wenn in SQL nicht möglich dann eben über die Oberfläche. Über SQL finde ich's eleganter. Viele Grüße ... |
AW: Dublettencheck über mehrere Spalten?
Kannst Du in SQLite mit temporärtabellen arbeiten, oder gibt es Sprachkonstrukte wie
Code:
Case when (Select bla from subquery s where s.Bed=Abfrage.Bed) then 1 else o end as Markierung
|
AW: Dublettencheck über mehrere Spalten?
|
AW: Dublettencheck über mehrere Spalten?
dann vielleicht in der Art, oder ähnlich ...
Code:
Select *
,Case When (Select Top 1 ID from Adressen ai where ai.Name=t.Name ...... Order by ModiTimeStamp) = t.ID then 0 else 1 end as FlagFuerAelter from Adressen t join ( Select Name,Vorname,Strasse,Count(*) as Anz from Adressen Group by Name,Vorname,Strasse Having Count(*)>1 ) a on a.Name=t.Name and a.Vorname=t.Vorname and a.Strasse=t.Strasse order by t.name,t.Vorname,t.Strasse |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz