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
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 |