Doppelte Einträge

Chimera16

Aktiver Benutzer
Beiträge
26
Hallo Datenbankforum,

ich habe eine Frage: Ich versuche doppelte Werte in meiner SQL Datenbank zu finden.
Das ganze mache ich mit folgender Abfrage:

SELECT title FROM dbo.ebay_item where Status = '0' GROUP BY title HAVING COUNT(*) ^> 1

Klappt auch wunderbar. Ich bekomme folgendes Ergebnis:

title

------------------------------------------------------------------------------
--
SD Card Karte 32GB Class10 Emtec Klasse 10

SD Card Karte 32GB Class10 Intenso Klasse 10

SD Card Karte 32GB Class10 SanDisk Extreme Klasse 10 UHS1

SD MicroSD Card 32GB Intenso Class10 inkl. SD Adapter

SD MicroSD Card 32GB Intenso Class6 inkl. SD Adapter

SD MicroSD Card 32GB SanDisk Extreme Class10 UHS1


(6 Zeilen betroffen)


Soweit so gut, allerdings benötige ich zu diesen Werten noch den jeweiligen Wert der Spalte "Templatename". Wie setze ich das um? Ich bin leider ein absoluter Anfänger in SQL. Wenn ich ein bisschen am Befehl rumbastel bekomme ich bestenfalls
"Die Unterabfrage hat mehr als einen Wert zurckgegeben. Das ist nicht zulässig"

Über jede Hilfe wäre ich sehr dankbar.

Danke & viele Grüße
 
Werbung:
Soweit so gut, allerdings benötige ich zu diesen Werten noch den jeweiligen Wert der Spalte "Templatename". Wie setze ich das um?

Mit einem JOIN?

Ich bin leider ein absoluter Anfänger in SQL. Wenn ich ein bisschen am Befehl rumbastel bekomme ich bestenfalls
"Die Unterabfrage hat mehr als einen Wert zurckgegeben. Das ist nicht zulässig"

Über jede Hilfe wäre ich sehr dankbar.

Danke & viele Grüße

Was hast denn versucht?
 
Also ich sag gleich: mit einem Aufbau der Tabelle würdest du uns schon mal mehr helfen.

Aber hast du es mal ganz einfach mit

Code:
SELECT templatename, title FROM dbo.ebay_item where Status = '0' GROUP BY title HAVING COUNT(*) ^> 1

versucht?
 
Ich vermute einfach mal das Problem ist er hat doppelte title-Einträge mit unterschiedlichen templates. Da ich nicht weiß wieviele gleiche Einträge jetzt da sein können würde ich es hiermit versuchen:
Code:
SELECT    t1.title,
        t1.templatename,
        t2.templatename
FROM    dbo.ebay_item t1
LEFT JOIN dbo.ebay_item t2
ON        t1.title = t2.title
AND        t1.templatename != t2.templatename
WHERE    t1.[status] = '0'
AND        t2.[status] = '0'
Damit bekommst du zumindest für jedes Duplikat eine zwei Zeilenen zurück. Bei mehreren Duplikaten potenziert sich das aber ganz schnell.
 
Hallo,

entschuldigt, dass ich so spät antworte... Ich bin leider beruflich sehr beschäftigt...

Und noch einmal danke für eure zahlreichen Antworten.
@akretschmer ich bin wie gesagt Neuling... Ich kenne mich mit keinem Join aus..

@gurbelunder Zu der Tabelle: Die Tabelle ist riesig und besteht aus mehr als 50 Spalten. Der Name der Tabelle ist dbo.ebay_item, Spalten sind u.a. die erwähnten enthalten: templatename, title und Status.

Ich möchte gerne alle doppelten "title" angezeigt bekommen. Das klappt mit der, von mir im ersten Post erwähnten, Abfrage. Allerdings wird da "nur" der Titel als Ergebnis angezeigt, ich bräuchte zusätzlich noch den jeweiligen Wert der Spalte "templatename"...

Das Ergebnis deiner Abfrage lautet:
Die 'dbo.ebay_item.Templatename'-Spalte ist in der Auswahlliste
ungültig, da sie nicht in einer Aggregatfunktion und nicht in der
GROUP BY-Klausel enthalten ist.


@ukulele Deine Lösung ist perfekt! Genau das was ich gesucht habe! Als Ergebnis bekomme ich das was ich wollte:

SD MicroSD Card 32GB Intenso Class10 inkl. SD Adapter

115491



112980



SD MicroSD Card 32GB Intenso Class6 inkl. SD Adapter

111909



92788



SD MicroSD Card 32GB SanDisk Extreme Class10 UHS1

134929



126680

.........

Jetzt kann ich endlich nicht nur sehen "welcher" Titel doppelt ist, sondern auch welcher Templatename dazu gehört. Ich danke dir noch einmal vielmals! Ich habe allerdings noch eine Frage, du schreibst es würde sich bei mehreren Duplikaten potenzieren. Was bedeutet, dass für mich? Liefert die Abfrage noch richtige Ergebnisse wenn ich z.B. 3 oder 4 Duplikate habe? Oder wird sie dann einfach nur unübersichtlich?

Danke an alle
Viele Grüße
 
Wenn du 2 Duplikate hast müsstest du als Ergebnis bekommen:
template X template Y
template Y template X

Mit potenzieren meine ich du hast mehr als 2 gleiche Datensätze:
template A template B
template A template C
template A template D
template B template A
template B template C
template B template D
template C template A
template C template B
template C template D
template D template A
template D template B
template D template C

Dabei handelt es sich um ein Duplikat mit 4 gleichen Tabelleneinträgen. Was du durch die Abfrage nicht bekommst:
title1 template X template Y
title2 template A template B template C template D
 
Werbung:
Hallo,

@akretschmer Danke für deine Antwort, ich werde mich mal intensiv mit dem Thema Join beschäftigen.

@ukulele danke auch dir für die Antwort. Achso, ich habe es nun verstanden, das macht mir nichts, ich kann ja einfach die Abfrage erneut ausführen wenn ich ein Duplikat beseitigt habe. :)

Das Thema ist für mich beendet, ich danke euch allen, insbesondere Ukulele.

Ein schönes Wochenende noch!
 
Zurück
Oben