Entwickler-Ecke
Datenbanken - SQL, suche nach Duplikaten
Hänsel - Mi 07.12.16 11:18
Titel: SQL, suche nach Duplikaten
Hallo,
ich benötige wieder einmal Hilfe.
Habe eine MSSQL-Datenbank. Wie kann ich auf schnellsten Weg in einer Tabelle nach (Feld "Gerätenummer") Duplikaten suchen. und auch diese gleich anzeigen lassen?
Im Voraus besten Dank
Hänsel
ub60 - Mi 07.12.16 11:43
Meinst Du so etwas?
SQL-Anweisung
1: 2: 3: 4:
| SELECT Gerätenummer, COUNT(Gerätenummer) AS Anzahl FROM Geräte GROUP By Gerätenummer ORDER BY Anzahl DESC |
Hier werden alle Dopplungen (oder mehrfaches Auftreten gezeigt). Eventuell könntest Du noch alle herausfiltern, deren Anzahl=1 ist.
ub60
JDommi - Mo 11.12.17 15:50
Ich habe das gleiche Problem mit einer Access-Datenbank. Leider funktioniert dieser SQL-Select bei mir nicht.
Meine Voraussetzungen:
Access-Datenbank und Delphi 7 mit ADOQuery.
Tabelle "People"
PeopleID Name WebPage
1 Name 1 Page 1
2 Name 2 Page 2
3 Name 3 (NULL)
4 Name 4 Page 2
5 Name 5 Page 1
6 Name 6 Page 3
7 Name 7 (NULL)
8 Name 8 Page 4
Select alle Datensätze die eine identische WebPage haben, aber nicht NULL sind und gruppiere diese nach WebPage
gewünschtes Ergebnis:
PeopleID Name WebPage
1 Name 1 Page 1
5 Name 5 Page 1
2 Name 2 Page 2
4 Name 4 Page 2
Versuche:
1.
SQL-Anweisung
1: 2: 3: 4: 5:
| SELECT PeopleID, Name, WebPage FROM People WHERE (SELECT COUNT(B.WebPage) FROM People AS B WHERE B.WebPage= WebPage) > 1 ORDER BY WebPage |
2.
SQL-Anweisung
1: 2: 3: 4: 5:
| SELECT PeopleID, Name, WebPage FROM People T1, (SELECT COUNT(WebPage) AS ANZAHL FROM People GROUP BY WebPage, PeopleID, Name) T2 WHERE T2.ANZAHL > 1 AND T1.WebPage = T2.WebPage |
3.
SQL-Anweisung
1: 2: 3: 4: 5:
| SELECT PeopleID, Name, WebPage, COUNT(WebPage) AS Anzahl FROM People WHERE WebPage <> NULL AND Anzahl > 1 GROUP By WebPage, Name, PeopleID ORDER BY Anzahl DESC |
Irgendwie bekomme ich immer nur den Fehler "fehlender Standardwert".
Im Moment arbeite ich mit
SQL-Anweisung
1: 2: 3:
| SELECT PeopleID, Name, WebPage, Web_ID FROM People ORDER BY WebPage |
und vergleiche die Werte für WebPage in einer Schleife.
Vielen Dank schon mal für die Hilfe!
JDommi
Ralf Jansen - Mo 11.12.17 20:10
Etwa so
SQL-Anweisung
1: 2: 3: 4: 5: 6: 7:
| SELECT * FROM People p1 WHERE EXISTS (SELECT * FROM People p2 WHERE p1.WebPage = p2.WebPage AND p1.PeopleID != p2.PeopleID) ORDER BY WebPage |
http://sqlfiddle.com/#!6/f1952/3
zum testen, ist zwar für'n SqlServer aber ist ja sehr rudimentäres Sql das auch in Access funktionieren sollte
JDommi - Di 12.12.17 00:41
Leider bekomme ich damit folgende Meldung:
Syntaxfehler in Abfrageausdruck 'EXISTS (SELECT * FROM People p2 WHERE p1.WebPage = p2.WebPage AND p1.PeopleID != p2.PeopleID)'
Korrektur:
Jetzt klappt es! Ich musste nur != durch <> ersetzen :)
Besten Dank!!!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!