CodeForum.chCode ForenSQLThema: SQL - doppelte Einträge ausgeben
Seiten: [1]
AntwortenDrucken
Autor Thema: SQL - doppelte Einträge ausgeben  (Gelesen 6854 mal)
schnurzli
oft hier
*
Offline Offline

Beiträge: 176



« am: 11. Mai 2006, 18:02:31 »
ZitierenZitat

Hallo,

habe folgenden Code verwendet um doppelt vorhandene daten aus einer SQL DB zu lesen. wie mache ich das nur, damit ich die die gesamte zeile und nicht nur die spalte angezeigt bekomme?

Code:
SELECT DISTINCT test
FROM         table
GROUP BY test
HAVING      (COUNT(test) > 1)
Moderator informieren   Gespeichert
dmaphy
nicht zu stoppen
*
Offline Offline

Beiträge: 554



WWW
« Antworten #1 am: 11. Mai 2006, 18:08:17 »
ZitierenZitat

Code:
SELECT DISTINCT *
FROM         table
GROUP BY test
HAVING      (COUNT(test) > 1)
Moderator informieren   Gespeichert

aus dem Chaos sprach eine Stimme zu mir:
"lächele und sei froh, es könnte schlimmer kommen".
und ich lächelte und war froh....
schnurzli
oft hier
*
Offline Offline

Beiträge: 176



« Antworten #2 am: 11. Mai 2006, 18:17:06 »
ZitierenZitat

das habe ich bereits probiert, jedoch erhalte ich dann immer:

Zitat
Die spalte2-Spalte ist in der Auswahl ungültig, da sie nicht in der Aggregatfunktion und nicht in der Group By Klausel vorhanden ist
Moderator informieren   Gespeichert
Gobo
nicht zu stoppen
*
Offline Offline

Beiträge: 1217



« Antworten #3 am: 11. Mai 2006, 18:38:56 »
ZitierenZitat

Versuch es einfach mal ohne DISTINCT:

Code:
SELECT *
FROM         table
GROUP BY test
HAVING      (COUNT(test) > 1)

Wie die Fehlermeldung nämlich bereits angedeutet hat, ist DISTINCT zwingend mit GROUP BY verbunden und kann meines Wissens nach auch nicht mit dem * verwendet werden, sondern immer nur mit eindeutigen Spaltennamen.
Moderator informieren   Gespeichert

Wenn die Klugen immer nachgeben, geschieht nur das, was die Dummen wollen.
schnurzli
oft hier
*
Offline Offline

Beiträge: 176



« Antworten #4 am: 11. Mai 2006, 18:46:22 »
ZitierenZitat

bringt leider dasselbe ergebnis Traurig

hab jetzt versucht, ein paar spalten einzubinden also anstelle von *, "spalte1, spalte2" jedoch gibt er mir dann die richtige anzahl an zeilen aus, aber nicht den inhalt.

wenn ein eintrag doppelt ist, dann wird eine leere zeile ausgegeben, wenn 2 doppelte einträge sind, dann werden 2 leere zeilen ausgegeben...

schon komisch...
Moderator informieren   Gespeichert
Gobo
nicht zu stoppen
*
Offline Offline

Beiträge: 1217



« Antworten #5 am: 11. Mai 2006, 23:43:57 »
ZitierenZitat

Hast Du die Möglichkeit, Subqueries zu nutzen? Ich denke damit sollte es dann endlich möglich sein. Auch wenn ich mir eigentlich sicher bin, dass es auch ohne gehen müsste...
Moderator informieren   Gespeichert

Wenn die Klugen immer nachgeben, geschieht nur das, was die Dummen wollen.
Laubi
nicht zu stoppen
*
Offline Offline

Beiträge: 1901


WWW
« Antworten #6 am: 12. Mai 2006, 07:37:40 »
ZitierenZitat

mit subqueries ist es am einfachsten ja.. geht aber teilweise auch ohne, ist nur die frage was du willst

wenn du sowas hast:
1, 2
1, 3

und du nach der ersten spalte (1) gruppieren willst um duplicates in der ersten spalte zu entfernen - welchen wert aus der zweiten nimmst du dann? sprich dann brauchst du eine aggregats funktion pro spalte die nicht gruppiert ist


willst du in dieser tabelle:
1, 2
1, 2
1, 3

die duplicates entfernen in bezug auf alle spalten dann musst du einfach dein group by um die zusätzliche spalte erweitern
Moderator informieren   Gespeichert
schnurzli
oft hier
*
Offline Offline

Beiträge: 176



« Antworten #7 am: 15. Mai 2006, 13:30:09 »
ZitierenZitat

also folgendes ist passiert:

ich habe in der datenbank etwa 30.000 einträge. da gibt es aber aufgrund eines bugs in der software, die auf die db zugreift, das problem, dass einige einträge dieselbe nummer haben(sagen wir mal es ist eine personalnummer) da aber jeder eine unique nummer hat, möchte ich nicht alle 30.000 einträge durchsehen sondern einfach mal die doppelten einträge anzeigen. wenn die vorhanden sind, kann ich ja dann weiter vorgehen...

nur hätte ich gerne die gesamte zeile ausgegeben, die eine doppelte personalnummer hat...
Moderator informieren   Gespeichert
kavalier 90
Gast
« Antworten #8 am: 04. März 2010, 22:00:35 »
ZitierenZitat Beitrag ändernÄndern Beitrag löschenLöschen

ich notiere einfach mal folgende Lösung

Sofern Datensätze doppelt sind

SELECT deine tabelle
FROM table
GROUP BY deine tabelle
HAVING Count(*)>1

es werden alle doppelten datensätze ausgeworfen. markiere dann alle gehe auf löschen und einer bleibt stehen.
Moderator informieren   Gespeichert
treFFnix
Gast
« Antworten #9 am: 20. Mai 2010, 14:38:15 »
ZitierenZitat Beitrag ändernÄndern Beitrag löschenLöschen

SELECT deine tabelle
FROM table
GROUP BY deine tabelle
HAVING Count(*)>1


DAS ist genau das was hier gesucht wurde!!!!!!


Zitat
SELECT Spalte
FROM Tabelle
GROUP BY Spalte
HAVING Count(*)>1
« Letzte Änderung: 20. Mai 2010, 14:40:37 von treFFnix » Moderator informieren   Gespeichert
Seiten: [1]
AntwortenDrucken
CodeForum.chCode ForenSQLThema: SQL - doppelte Einträge ausgeben
Gehe zu:  

 

Partner Sites

Werbung

TinyPortal v1.0.5 beta 1© Bloc