Mehrere Einträge anhand Primary-Key-Liste löschen

From: "Mag(dot) Dr(dot) Stefan Krejci" <office(at)skrejci(dot)com>
To: <pgsql-de-allgemein(at)postgresql(dot)org>
Subject: Mehrere Einträge anhand Primary-Key-Liste löschen
Date: 2012-07-21 13:18:54
Message-ID: 000001cd6743$61021a90$23064fb0$@skrejci.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-de-allgemein

Hallo!

Ich lausche schon seit längerem dieser interessanten Mailinglist, weil ich
selber viel mit PostgreSQL arbeite und so immer wieder auf interessante
Tipps und Tricks stoße. Bis jetzt konnte ich all meine Probleme selber
lösen, aber jetzt stehts bei mir grad an:

Ich arbeite für eine kleine Bibliothek an einer Webapplikation, die soweit
bereits seit einigen Monaten gut auf Basis von PostgreSQL läuft. Es gibt
u.a. eine Tabelle mit Leserstammdaten (Leser), wo unter anderem das
Geburtsdatum gespeichert ist. In einer anderen Tabelle sind alle
Definitionen für Abonnements hinterlegt (LAbo), und in einer dritten Tabelle
verknüpfe ich diese Daten (LxAbo).

Die verschiedenen Abonnements müssen zu verschiedenen Zeitpunkten wieder
rausgelöscht werden (z.B. am Ende des Jahres, oder am Ende eines
Halbjahres). Es gibt aber auch ein spezielles Abonnement für
Kindergarten-Kinder, wo das Abonnement erst rausgelöscht werden darf, wenn 2
Bedingungen zutreffen: 1. muss es Ende Juli eines Jahres sein, und 2. muss
das Kind zu dem Zeitpunkt mind. 6 Jahre alt sein.

Jetzt meine Frage: Brauche ich dafür tatsächlich mehrere Abfragen, die ich
hintereinander ausführen muss, oder lässt sich das schon in einem Aufruf
eleganter erledigen? Soweit bin ich ungefähr:

=============================================

SELECT lxabo."LxAboID”

FROM "Leser" AS l, "LxAbo" AS lxabo

WHERE ((((EXTRACT(YEAR FROM CURRENT_DATE)) - (EXTRACT(YEAR FROM
l."LGebDat")) -

(EXTRACT(DOY FROM CURRENT_DATE)<EXTRACT(DOY FROM
l."LGebDat"))::integer) >= 6) AND

(l."LID" = lxabo."LxAboLID") AND

(lxabo."LxAboLAboID" = 'testAboID') AND

(lxabo."LxAboBibID" = '40922002321'));

=============================================

ergibt korrekt:

=============================================

"f3f35a20b9985af4a46c2db8faeaeb3b“

"2a1447bd485163afc3031930124ed504"

usw.

=============================================

Ich bekomme also eine Liste von LxAboIDs, die ich jetzt alle in der Tabelle
LxAbo rauslöschen müsste. Aber geht das direkt in PostgreSQL, oder muss ich
das Ergebnis mit PHP auslesen und kann die Einträge dann erst aus der
Tabelle löschen?

Vielen Dank, Stefan

Responses

Browse pgsql-de-allgemein by date

  From Date Subject
Next Message Michael Renner 2012-07-21 14:03:04 Re: Mehrere Einträge anhand Primary-Key-Liste löschen
Previous Message Susanne Ebrecht 2012-07-19 08:12:55 Re: Umstellung von MySQL auf PostgreSQL