MySQL Forums
Forum List  »  German

Tanzschulen Datenbank - aktuellen Mitgliedsvertrag ausgeben
Posted by: Chris Greunke
Date: May 22, 2014 10:45AM

Hallo,

ich habe eine Datenbank für eine Tanzschule erstellt.
Dort habe ich eine Tabelle in der alle Mitglieder eingetragen sind mit persönlichen Daten.

Tabelle "Mitglieder"

ID | Name | Vorname | Geburtsdatum | Kontaktdaten | Eintrittsdatum

Eine weitere Tabelle "Vertrag" beinhaltet die Vertragsdaten der jeweiligen Mitglieder. Jeder Vertrag hat ein "Anfangsdatum", also ab wann dieser Vertrag gilt, da jedes Mitglied mehrere Verträge haben kann (je nach dem welche Kurse und wie viele Kurse gelegt werden muss nämlich ein anderer Beitrag gezahlt werden).

Tabelle "Vertrag"

Vertrag_ID | Mitglied | Beitrag | AnfangsDatum

Dann gibt es noch eine Tabelle "verkn_mitgl_kurs". Wie der Name schon sagt ist dort festgehalten welche Kurse jedes Mitglied belegt. Zusätzlich ist noch eine Vertragsnummer notiert, dass man nach vollziehen kann, wann, welches Mitglied, welche Kurse belegt hat und somit welchen Beitrag zu bezahlen hat.

Tabelle "verkn_mitgl_kurs"

Mitglied | Kurs | Vertrag
(alles Fremdschlüssel)

Jetzt hab ich zwei Probleme.
Das erst: Ich möchte in einer Mitglieder Übersicht eine Tabelle ausgeben lassen, in der man den Namen des Mitglieds sieht, den aktuellen Beitrag und die aktuell belegten Kurse.
Doch das mit dem aktuell funktioniert nicht richtig.

Das ist meine Abfrage:

SELECT
m.Name, m.Vorname,m.ID, Vertrag.*
FROM
Mitglieder m
LEFT JOIN ( SELECT v1.*
FROM Vertrag as v1
LEFT JOIN Vertrag AS v2
ON v1.Vertrag_ID = v2.Vertrag_ID AND v1.AnfangsDatum < v2.AnfangsDatum
WHERE v2.Mitglied IS NULL ) as Vertrag
ON (m.ID = Vertrag.Mitglied)
GROUP BY m.ID ORDER BY Name, Vorname ASC

Das funktioniert leider nicht ganz. Bei einigen Mitgliedern wird nicht der richtig Beitrag angezeigt. Ich nehme an, dass die Abfrage nach dem aktuellsten Vertrag nicht richtig ist.

Mein 2. Problem:
Ich möchte Anwesenheitslisten erstellen. Das heißt für jeden Kurs eine Liste mit allen Mitglieder, die aktuell diesen Kurs besuchen.
Mit meiner Abfrage tauchen Mitglieder allerdings auch auf Kurslisten auf die Sie früher mal belegt haben:

SELECT
m.Name, m.Vorname,m.ID, Vertrag.*
FROM
Mitglieder m
LEFT JOIN ( SELECT v1.*
FROM Vertrag as v1
LEFT JOIN Vertrag AS v2
ON v1.Vertrag_ID = v2.Vertrag_ID AND v1.AnfangsDatum > v2.AnfangsDatum
WHERE v2.Mitglied IS NULL ) as Vertrag
ON (m.ID = Vertrag.Mitglied)
LEFT JOIN verkn_mitgl_kurs as verkn ON verkn.Vertrag = Vertrag.Vertrag_ID
WHERE verkn.Kurs = '".$KursID."'
GROUP BY m.ID
ORDER BY m.Name, m.Vorname ASC

Jemand eine Idee ?

Options: ReplyQuote


Subject
Views
Written By
Posted
Tanzschulen Datenbank - aktuellen Mitgliedsvertrag ausgeben
1576
May 22, 2014 10:45AM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.