Select für doppelte Datensätze gesucht

Hallöchen,
irgendwie habe ich gerade nen Brett vor dem Kopf…

Ich brauche einen Select, der mir alle Datensätze anzeigt, bei denen in der Spalte XY der gleiche Eintrag steht.
Sprich:
XX
XX
1234
1234
XX
XX

als Ergebnis sollen dann quasi nur die
1234
1234
Datensätze erscheinen.

Nochbesser wäre es natürlich, alle Datensätze, die in dieser Spalte nicht nur doppelt sonder x-fach enthalten sind.

Weiß jemand Rat?

Gruß

Sina

hi!

in der voraussetzung, daß es einen eindeutigen schlüssel für die tabelle gibt und spalte1 und spalte2 x-beliebige felder der tabelle, würd ich in sql wie folgt vorgehen, wobei du auch noch die anzahl der „gleichen“ sätze kriegst;

select a.spalte1,a.spalte2,count(*)
from tabelle b, tabelle a
where a.id != b.id
and a.spalte1 = b.spalte1
and a.spalte2 = b.spalte2
group by a.spalte1,a.spalte2;

das ganze würde auch noch mit einem „(not) exist“ oder „(not) in“ funktionieren … ganz wie du willst …

grüße,
tomh

hi,
wie mache ich das mit der a.id bzw. b.id bei einem zusammengesetzten Schlüssel?
Nur die Kombination aus zwei Felder ist auf der Tabelle eindeutig…??

Gruß

Sina

Hallo,

SELECT spalte
FROM tabelle
WHERE spalte IN (SELECT spalte
FROM tabelle
GROUP BY spalte
HAVING count(spalte) > 1)
/

Gruß Stefan

hi!

da brachte mich doch jetzt glatt janus auf die idee:

select spalte1, spalte2, count(*)
from tabelle
group by spalte1, spalte2
having count(*) > 1

hab jetzt grad zuhause kein sql um es auszuprobieren … dürfte aber klappen

grüße,

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi,

da brachte mich doch jetzt glatt janus auf die idee:

Aber Janus’ Select ist richtiger, denn die ursprüngliche Frage will nicht nur die Schlüsselspalten, sondern die ganzen Datensätze haben.

Generell ist das hier genau die Schwierigkeit: Einerseits will man alle Spalten haben, andererseits nur über eine oder zwei Schlüsselspalten gruppieren, was dann gleichzeitig die Anzeige der restlichen Spalten verbietet. Da bleibt nur ein "select * … where … in(… group by …) übrig.

Gruß

J.

hi!

Generell ist das hier genau die Schwierigkeit: Einerseits will
man alle Spalten haben, andererseits nur über eine oder zwei
Schlüsselspalten gruppieren, was dann gleichzeitig die Anzeige
der restlichen Spalten verbietet. Da bleibt nur ein "select *
… where … in(… group by …) übrig.

Gruß

J.

wenn ich die doppelten sätze, und damit meine ich jene datensätze, bei denen bis auf den primary key wirklich alles ident ist, herausfiltern will, sind ja genau diese doppelten felder die schlüsselspalten, über die ich gruppieren will bzw. muß … also bleibt es „ghupft wie gsprungen“, wie ich daran gehe … wobei ich bei meiner lösung sogar noch auf die performance pochen kann :wink:

grüße,
tomh

wenn ich die doppelten sätze, und damit meine ich jene
datensätze, bei denen bis auf den primary key wirklich alles
ident ist, herausfiltern will, sind ja genau diese doppelten
felder die schlüsselspalten, über die ich gruppieren will bzw.
muß … also bleibt es „ghupft wie gsprungen“, wie ich daran
gehe … wobei ich bei meiner lösung sogar noch auf die
performance pochen kann :wink:

Klar. Aber Du bist damit noch nicht fertig. Du mußt aus den Schlüsselfeldern mit einem weiteren Select die ganzen Datensätze holen.

Gruß

J.