Amtszeit abfragen

Phips_CH

Mitglied
Hallo zusammen

Ich hab eine Tabelle adrvorst die aus den ID's dreier Tabellen besteht. (Vorstand, Adressen, GV)

Die Tabelle adrvorst hat 5 Spalten (ID, id_Vorstand, id_Adressen, angetreten, zurückgetreten)
Bei Angetreten und Zurückgetreten steht die ID aus der Tabelle GV.

Wenn jemand ein Vorstandsamt erzeuge ich einen Datensatz und schreib bei angetreten, die ID aus der Tabelle GV wann die Person für dieses Amt gewählt wurde.
Wenn diese Person davon zurücktritt, ändere ich den Datensatz und schreib bei zurückgetreten die ID, bis zu welcher GV die Person das Amt ausgeführt hat.

IDID_VorstandID_Adresseangetretenzurückgetreteen
1616979
211790
322790
4656369

Nun möchte ich die Amtszeiten Abfragen.
Wenn eine Person ein Amt angetreten hat, und davon zurückgetreten ist, ist dies auch kein Problem.
Schwieriger wird es, wenn jemand noch im Amt ist. dann steht bei zurückgetreten "0" drin. dann soll die "0" durch das aktuelle Jahr ersetzt werden.

Noch schwieriger wird es dann wenn eine Person mehrere Ämter hatte, resp. noch eins davon ausführt. (es kann immer nur ein Amt auf einmal ausgeübt werden).

Die summe aller Amtszeiten des Vorstands, geteilt durch zwei, wird dann der aktiven Zeit im Verein angerechnet.

Wieso jedes Jahr neu ausrechnen wenn es auch automatisch geht.

Kann mir jemand helfen wie ich da weiter komme? resp. wo ich anfange muss.

Vielen Dank schon jetzt

Gruss
Phips_CH
 
Ich versteh nur die Hälfte von dem was du haben willst.

Aber, das mit 0 ist einfach.
SQL:
SELECT
    ....
    IF(zurückgetreten = 0 , YEAR(NOW()), zurückgetreten) AS zurückgetreten
FROM
    ....
 
Zuletzt bearbeitet von einem Moderator:
genau und jetzt noch di Kombination. ;-)

wenn du in der Tabelle die Zeilen mit der ID 1 und 2 ansiehst, kannst du sehen dass das die selbe Person ist. diese beiden Amtsdauern möchte ich zusammenzählen. Es kann aber gut sein, dass es noch mehr Datensätze sind.
Ich möchte so die gesammte Zeit ermitteln die eine Person im Vorstand aktiv war/ist.
 
Wenn ich wüsste, was id_vorstand sein soll, dann würd ich ev. sogar verstehen was die Tabelle soll.
Und wo ist diese beschriebene ID_GV? Ide sehe ich nirgends.
Hat die Adresse irgend einen Zusammenhang mit dem Rest oder kann man diese ignoerieren?
Was trägst du ein, wenn jemand an einer GV wiedergewählt wird? Gibts dann für diese GV einen Eintrag, bei der [angetreten] und [zurückgetreten] identisch sind?
 
In der Tabelle "Vorstand" stehen die Vorstandsämter (Präsident, Vicepräsident, AKtuar, Kassier, etc.) deren ID ich in der Tabelle "adrvorst" steht.

In der Tabelle "GV" steht das Datum der GV's. (Generalversammlung) da ich diese Datum öfters brauche, hab ich eine eigene Tabelle gemacht deren ID bei angetreten resp. zurückgetreten steht.
Mittels LEFT JOIN rechne ich dann: zurückgetreten - angetreten = Amtszeit. Das zum einfacheren Teil ;-)

Wenn eine Person mehrere Ämter ausgeführt hat, bauch ich die ID um zu ermitteln, welche Ämter sie ausgeführt hatte.
Daher denke ich, brauch ich die ID aus Adressen.

Ich erfasse alle Änderungen. Wenn jemand gewählt (angetreten) ist, und wenn er zurückgetreten ist.
 
Aber, das mit 0 ist einfach.


Code sql:

SELECT
....
IF(zurückgetreten = 0 , YEAR(NOW()), zurückgetreten) AS zurückgetreten
FROM
....

Irgend etwas schein da nicht zu stimmen. ich erhalte immer einen Fehler.

Ich hab die Spalten schon richtig benannt. die heissen bei mir in wirklichkeit advor_zurueckgetreten.
 
Also, ich versteh das so:
IDID_VorstandID_Adresseangetretenzurückgetreteen
1616979
Das bedeutet. Bei der GV 1 gibt es im Vorstandsposten 6 (sagen wir mal Kassier) die folgender Wechsel. Das Mitgleid mit der ID 69 wird Kassier und das Mitglied 79 tritt als Kassier ab.
Irgend einer davon hat die Adresse 1.

Ist das soweit richtig?

Folgende Fragen bleiben trotzdem noch offen.

1) Was wird eingetragen, wenn der President (sagen wir id:vorstand=1) wiedergewählt wird.
2) Woher kommt das Jahr?
 
Nein ich das wie Folgt vor:



Die "6" bei ID_Vorstand steht für das Amt. (sagen wir mal Kassier)
Die "1" bei ID_Adresse stehr für die Person, die Das Amt ausführt. (Pester Mster) Der Name etc. steht in der Tabelle Adressen.
Die "69" bei angetreten steht für 2002-02-09 (Datum der Generalversammlung im Jahr 2002) das Datum zur ID steht in der Tabelle GV An dieser GV wurde Pater Muster als Kassiert gewählt. solange er nicht zurückgetreten ist und wieder gewählt wurde, steht bei zurückgetreten ein "0".
Die "79" bei zurückgetreten steht für 2012-02-11 (Datum der Generalversammlung im Jahr 2012) auch aus der Tabele GV. dieser Wert schreib ich erst wenn die Person zurückgetreten ist.
die Differenz ergibt die Amtszeit als Kassier.
Wenn nun zum Beispiel Peter Muster vom Kassier zum Präsident gewählt wird,erzeuge ich einen neuen Datensatz.



Ich hoffe ich konnte es jetzt etwas verständlicher Ausdrucken.

Gruss
Phips_CH
 
Zuletzt bearbeitet von einem Moderator:
Achso ist das.

Ich komme auf etwa diese Lösung:
Der Test dazu
SQL:
SELECT
	a.id_adresse,
	SUM(YEAR(IFNULL(zgv.datum, NOW())) - YEAR(agv.datum)) AS amtsjahre
FROM
	adrvorst	a
	INNER JOIN gv agv ON agv.id = a.angetreten
	LEFT JOIN gv zgv ON zgv.id = a.zurueckgetreten
GROUP BY
	a.id_adresse
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück