phpbar.de logo

Mailinglisten-Archive

[php] Query

[php] Query

Gunther Pilz phpbar at top-topics.com
Son Mar 15 23:42:36 CET 2009


Hallo Achim!

Achim schrieb:
> ich möchte aus einer Tabelle Mitglieder eines Vereins zwecks 25Jähriger
> Ehrung auslesen.
>
> Ich hab die Spalten: Eintrittsdatum und Geburtsdatum.
>
> Bedingung für die 25jährige Ehrung ist: das Mitglied muss beim Eintritt
> mindestens 14 Jahre alt sein!
>
> Das ist ja noch verhältnismäßig einfach:
>
> Year(eintrittsdatum) –year(geburtsdatum) <= 14
>   

aber schon falsch ...
Angenommen ich bin im Jahr 2000 in euren Verein eingetreten und 1970
geboren, dann ergibt deine Berechnung:
2000 - 1970 = 30
Das erfüllt aber nicht deine Bedingung X <= 14

Andersherum (X >= 14) wird es schon richtiger, aber ich habe meine
Zweifel, ob es hinreichend genau ist!
Denn wenn du schon Wert auf das Alter zum Zeitpunkt des Eintritts legst,
dann müsste man es imho auch genau machen - also jeweils das genaue
Datum (Tag, Monat und Jahr) von Geburtstag und Eintritt nehmen.

Außerdem hast du damit noch ein anderes Problem - siehe unten!

> And
>
> Year(now()) – year(eintrittsdatum) = 25
>
> Aber wenn jetzt Jemand zu diesem Zeitpunkt bzw. erst 13 war, dann kann er ja
> im nächsten jahr geehrt werden. Dann ist aber nach meiner Formel schon 26
> Jahre vergangen und er erscheint nicht mehr in meiner Abfrage.
>   

Beispiel:
Eingetreten: 1984
Geboren: 1971
Now: 2009

1984 - 1971 = 13
2009 - 1984 = 25

nächstes Jahr:
1984 - 1971 = 13
2010 - 1984 = 26

Merkst du was?
Mit deiner Berechnung Year(eintrittsdatum) – Year(geburtsdatum)
ermittelst du immer denselben Wert, nämlich das Alter zum Zeitpunkt des
Eintritts. Damit allein kommst du also nicht weit.
Wenn ich also mind. 25 Jahre im Verein sein muss seit ich mind. 14 Jahre
alt bin, um geehrt zu werden, dann hast du ja eine zusätzliche Bedingung
(neben den genau 25 Jahren Vereinszugehörigkeit).

Also wirst du (vermutlich) nicht mit einer einzelnen Abfrage auskommen
und wirst eine Fallunterscheidung machen müssen.

Leute, die beim Eintritt mind. 14 Jahre alt waren, können demnach auch
genau in dem Jahr wo sie 25 Jahre dem Verein angehören geehrt werden.
Diejenigen, die beim Eintritt aber jünger waren, müssen dementsprechend
länger dem Verein angehören, um ihre 25-Jahr Ehrung zu erhalten.
Also wenn Eintrittsalter < 14 dann:

Year(now()) – (25 + (14 - Eintrittsalter)) = 25

> Ich hab schon jede Menge Umstellungen gemacht komme aber nicht weiter.
> Vielleicht hat ja jemand noch eine Idee.
>   

Hoffe, das hilft dir weiter bei deinen Überlegungen.

Gunther

PS: Persönlich finde ich das ja etwas merkwürdig mit dieser
Altersregelung, denn entweder gehöre ich dem Verein seit 25 Jahren oder
nicht. Was hat das denn mit dem Alter beim Eintritt zu tun?



php::bar PHP Wiki   -   Listenarchive