2016-11-09 6 views
0

Ich habe eine Abfrage für die Anzeige potenzieller Duplikate aus einer Liste von Telefonbucheinträgen mit dem gleichen Vorname, Nachname. Der Benutzer ist dann in der Lage, verdächtige Duplikate nach der Überprüfung weiterer Metadaten zusammenzuführen.Kennzeichnung möglicher Duplikate als unterschiedliche

Was ich nicht ganz ausarbeiten kann, ist, wie man Paare als unterschiedliche und nicht als Duplikate kennzeichnen kann.

Ich wollte eine Tabelle erstellen, die Paare auflistet, die keine Duplikate sind, aber ich kann keine Möglichkeit finden, diese aus der generierten Liste verdächtiger Duplikate auszuschließen. Die SQL für die Liste ist unten. Ich fragte mich, ob ich das hier zurückgeben könnte, aber es war immer noch nicht ganz sicher, und ich fragte mich, ob jemand eine effiziente Lösung hat.

Ich mache das in MySQL und C#, aber die Prinzipien sollten für jede Sprache gelten.

+0

Sind Sie auf der Suche nach linq gleichbedeutend mit obigen SQL-Abfrage? Wenn ja, geben Sie Ihre linq an, die Sie ausprobiert haben. – Viki888

+0

Hallo viki888 danke für die Nachfrage und tut mir leid, das war nicht klar. Nein, ich habe mich nur gefragt, ob ich LINQ oder eine andere Methode verwenden sollte, um Paare auszuschließen, die nach der Erstellung der Liste der möglichen Duplikate nicht als Duplikate gekennzeichnet sind. – DuncanOppaz

+0

Ich denke, das ist, was er fragt ... Sie haben zwei Personen in einer Datenbank (A und B), die den gleichen Namen haben. Das System denkt, dass es sich um dieselbe Person handelt (ein Duplikat), aber der Benutzer weiß, dass es sich um verschiedene Personen handelt, daher markiert er sie als einzigartig. Dann wird Person C zur Datenbank hinzugefügt, die wiederum denselben Namen hat. Das System sollte in der Lage sein, zu signalisieren, dass Person C ein Duplikat von A oder B sein könnte, aber auch wissen, dass A und B nicht dieselbe Person sind. – philwilks

Antwort

0

Dank e4c5 ist dies nun beantwortet.

Ich hatte mich auf die Tatsache konzentriert, dass wir Paare als Duplikate markierten, um mögliche zukünftige Duplikate identifizieren zu können.

Da e4c5 darauf hinweist, dass es eine einfache zusätzliche Spalte is_distinct gibt, wird das Paar verdächtiger Duplikate als wahr markiert.

Für die neue Liste verdächtiger Duplikate führe ich die SQL wie vorher, aber dann die Liste der Namen, die Duplikate vermutet haben und finde die Datensätze mit diesen Namenskombinationen, die aber nicht als is_distinct markiert sind. Beispiel C# -Code und MySQL-Abfrage unten:

var peoplenames = peoplelist.Select(p=>p.FirstName + " " + p.LastName); 
var joinedpeoplenames = string.Join("','", peoplenames); 

SELECT p.* 
FROM people p 
WHERE CONCAT(p.FirstName,' ',p.LastName) IN ('?joinedpeoplenames') 
GROUP BY p.PersonId 
Verwandte Themen