hoogste graad per persoon

Status
Niet open voor verdere reacties.

shidan

Gebruiker
Lid geworden
8 jan 2007
Berichten
351
goedemiddag,

ik ben bezig met een kleine databank voor een sportclub.
elk lid kan examen doen om een hogere graad te behalen.
nu wil ik weten wat de hoogste graad is van elk lid

kan iemand helpen?
dit zijn de tabellen

Tbl_personen
Persoon_id
Naam

Tbl_graden
Graad_id
Naam

Tbl_examens
Examen_id
Persoon_id
Graad_id
Datum
geslaagd
 
Hallo,
bij de tabel Tbl_graden heb je alleen een Id (logisch gezien een autonumber) en een omschrijving. Uit een omschrijving is voor een database niet logisch uit te maken (ik denk maar aan zwarte en gele banden) welke de hoogste is, daarom heb ik een numeriek veld Level aan de tabel graden toegevoegd. In het voorbeeld heb ik dan de rangorde aangenomen: hoe hoger het level, hoe hoger het nummer. Dan kan je het hoogste level per persoon opvragen met een query als:

Code:
SELECT P.Persoon_id, P.Naam, Max(G.Level) AS MaxGradenLevel
FROM Tbl_personen P INNER JOIN (Tbl_graden G INNER JOIN Tbl_examens E ON G.Graad_id = E.Graad_id) ON P.Persoon_id = E.Persoon_id
WHERE E.Geslaagd=-1
GROUP BY P.Persoon_id, P.Naam;
 
goedenavond,

het is de bedoeling een lijst te krijgen van elke persoon met zijn hoogste graad.
nu moet ik een graad ingeven?
 
Gewoon in de tabel Tbl_Graden een veld toevoegen zodat je weet welke graad de hoogste is. Als je een tabel zou hebben zoals:
Graad_id Naam
1 Witte gordel
2 Zwarte gordel
3 Gele gordel
5 Bruine gordel

heb je geen mogelijkheid om te weten welke graad de hoogste is, en iets dat onbekend is kan je niet opvragen. Daarom heb ik een extra veld toegevoegd 'Level' dat aangeeft welke de hoogste graad is.
Je zou kunnen zeggen dat het ID-veld het level aangeeft, maar dat is geen goed idee. Het ID-veld is best een veld met maar één betekenis: een primaire sleutel voor de database, liefst een autonumber, dus daar kan je geen echte volgorde in zetten.

succes
Noëlla
 
Lol, ik denk dat onze berichten elkaar gekruist hebben.
 
Je had natuurlijk, de wetten der logica volgend, ook kunnen volstaan met het selecteren op de hoogste datum. Dan hoef je geen tabel aan te passen. Daarbij ga je dan uit van de logica dat je eerst het laagste niveau doet, dan de volgende etc. Daar volgt dan uit dan de laatse datum automatisch ook het hoogste niveau is. Tenzij je met de zwarte band mag beginnen natuurlijk, dan gaat het fout :).
 
Voorbeeld uit de praktijk van een bestaande club: in mei examen bruine gordel - in september examen jeugdbegeleider. Bruine gordel blijft hoger dan jeugdbegeleider
 
Jeugdbegeleider heeft vast geen graad :). Dus mijn punt blijft gewoon valide :D
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan