Hi!
Das Problem scheint mir in der Tat nicht so ganz einfach - zumindest innerhalb SQL - lösbar.
Ich habe das Problem ungefähr so verstanden. Wenns wir uns von der Tabelle lösen, in der versch. Adressen inkl. Adressdetails mit Gruppennummern zusammen gespeichert sind und etwas abstrahieren, komme ich auf folgende Problemstellung. Wir haben eine Menge von Werten, die jeweils einer Gruppe zugeordnet ist, in folgender Art (wenn man die Adressdetails bspw. ein einer seperaten Tabelle speichert und stattdessen die Beziehung zur Gruppe mittels einer Adress-ID einzeln hält - Thema Normalformen !):
Tabelle adressengruppen
adress_nr, gruppen_nr
1, 1
1, 1
2, 1
3, 1
2, 5
1, 5
4, 5
2, 5
1, 3
2, 3
3, 3
1, 4
1, 4
2, 4
3, 4
Nun stellt sich ja die Frage, wie man z.B. feststellt, dass die Menge der Adressnummern die der Gruppennummer 1 zugeordnet sind, identisch ist mit der Menge der Adressnummern die der Gruppennummer 4 zugeordnet sind, oder? So habe ich zumindest das Problem verstanden.
Man muss also Mengen von Zahlen als identisch dann erkennen, wenn quasi alle enthaltenen Elemente identisch sind.
Ad hoc fällt mir dazu nur eine Art Funktion ein, die für eine Gruppe eine eindeutige Zahl, ähnlich einer "Hashfunktion2 bildet. In oracle könnte man folgendes Benutzen (obere Bsptabelle als Vorlage):
SELECT DISTINCT t2.gruppen_nr,
( SELECT sum(t1.adress_nr*power(( select max(adress_nr) from adressengruppen), rownum)) pruef_id
FROM adressengruppen t1
WHERE t1.gruppen_nr = t2.gruppen_nr
) id_id – ordnet Zifferngruppe eindeutigen Wert zu
FROM adressengruppen t2;
Zwei Gruppen sind dann gleich, wenn sie die gleiche pruef_id besitzen.
SQL-Syntax ist oracle. In ANSI-SQL ist sowas natürlich nicht möglich.
Am effizientesten erscheint mir für sowas eher ein Programm.
Gruss
Johannes
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]