Autor Beitrag
Hänsel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 99



BeitragVerfasst: Mi 07.12.16 11:18 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 694
Erhaltene Danke: 92



BeitragVerfasst: Mi 07.12.16 11:43 
Meinst Du so etwas?

ausblenden 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
Hält's aus hier
Beiträge: 5



BeitragVerfasst: 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.
ausblenden 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.
ausblenden 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.
ausblenden 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
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4416
Erhaltene Danke: 901


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 11.12.17 20:10 
Etwa so

ausblenden 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


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
Hält's aus hier
Beiträge: 5



BeitragVerfasst: 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!!!