Daten entfernen

PetraSteiner

Fleissiger Benutzer
Beiträge
60
Hallo zusammen,

ich habe folgende Problemstellung:
Es gibt Mitgliedsdaten. Die sehen so aus:

Nummer Vorname Name FAM Status
10 Martin Ansmüller 1 E
11 Petra + Martin Ansmüller 1 V
12 Anton Hering 2 E
13 Erich Müller 3 E
13 Sandra Müller 4 E
14 Martin+ Sandra Müller 4 V
15 Erich + Erika Maier 5 V
Es gibt also Datensätze, bei denen es ein Kurs einzeln oder auch doppelt besucht wird.
Ich sollte wenn es zwei Datensätze mit dem gleichen Wert "FAM" gibt den V Status löschen.
Es kann aber auch sein, dass es nur ein "V" Datensatz gibt.

Mit fällt aktuell kein Ansatz ein. Stehe vollkommen auf dem Schlauch.
 
Werbung:
welche id's sollen denn gelöscht werden? Ist das eine exta Erschwerung, daß Du doppelte id's hast? Wäre die Löschung von id 11 und 14 Dein Ziel?

Code:
test=*# select * from petra ;
 nummer |   vorname    | name | fam | status
--------+--------------+------+-----+--------
     10 | martim       | a    |   1 | E
     11 | petra+martin | a    |   1 | V
     12 | A            | H    |   2 | E
     13 | erich        | m    |   3 | E
     13 | sandra       | m    |   4 | E
     14 | martin       | m    |   4 | V
     15 | erich        | m    |   5 | V
(7 rows)

test=*# with doppelt as (select fam, count(distinct status) from petra group by fam having count(distinct status) = 2) select * from petra where fam in (select fam from doppelt) and status = 'V';
 nummer |   vorname    | name | fam | status
--------+--------------+------+-----+--------
     11 | petra+martin | a    |   1 | V
     14 | martin       | m    |   4 | V
(2 rows)

test=*#

Falls das so stimmt: die Umstellung auf DELETE überlasse ich Dir zur Übung.
 
Herzlichen Dank für die großartige Unterstützung. Das muss ich erstmal verdauen.
Die doppelten IDs sind ein Eingabefehler bei Beispiel :)
11 und 14 müssten raus, das ist richtig.

Wenn ich den SQL-Select lese, verstehe ich das so:
Erst wird ein Art View erstellt mit der Gruppierung auf FAM und der Bedingung Status = 2

Im zweiten Select wird dann geprüft welcher Datensatz in dem View doppelt vorkommt und den Status V hat.

Habe ich das soweit richtig verstanden?

Viele Grüße Petra
 
Werbung:
Zurück
Oben