Voor de studievereniging ben ik gevraagd wat uit te denken voor de bedrijvendagen die er aan komen. Het idee is dat via het web de mensen zich moeten kunnen opgeven voor diverse workshops. Hierbij wil de organisatie oudejaars voorrang geven op de jongere studenten, wanneer ook de oudere jaars zich inschrijven. Ook moet het systeem rekening houden met 1e, 2e en 3e keuzes van de mensen voor de workshops.
Nu probeer ik dat eerst even uit in Access voor de overzichtelijkheid, om het later naar MySQL over te zetten. Dit heb ik nu gemaakt:
tabel: Personen
velden: PersoonID (index, autonummer), Voornaam, tv, Achternaam, Jaargang (dat laatste slaat op studiejaar)
tabel: Workshops
velden: WorkshopID (index, autonummer), Workshopnaam
tabel: Keuzes
velden: KeuzeID (index, autonummer), PersoonID (numeriek, verwijzend), WorkshopID (numeriek, verwijzend), Keuze (numeriek) (dit laatste ziet op 1e, 2e, 3e keuze)
Vervolgens maak ik een query als volgt:
Dit lijkt een aardig goed resultaat te geven. Het probleem treedt op zodra ik de aparte werkgroepindelingen wil oproepen. Ik pas de query dan als volgt aan:
Probleem is dat ik nu ook alle lagere keuzes te zien krijg. Dus dankzij deze query zou iedereen in alle workshops die hij opgegeven heeft geplaatst worden, of dit nu 1e, 2e of 3e keuze is.
Hoe ondervang ik dat probleem nu?? Alvast bedankt voor het meedenken!!
Nu probeer ik dat eerst even uit in Access voor de overzichtelijkheid, om het later naar MySQL over te zetten. Dit heb ik nu gemaakt:
tabel: Personen
velden: PersoonID (index, autonummer), Voornaam, tv, Achternaam, Jaargang (dat laatste slaat op studiejaar)
tabel: Workshops
velden: WorkshopID (index, autonummer), Workshopnaam
tabel: Keuzes
velden: KeuzeID (index, autonummer), PersoonID (numeriek, verwijzend), WorkshopID (numeriek, verwijzend), Keuze (numeriek) (dit laatste ziet op 1e, 2e, 3e keuze)
Vervolgens maak ik een query als volgt:
SQL:
1
2
3
4
| SELECT Personen.Jaargang, First(Workshops.Workshopnaam) AS EersteVanWorkshopnaam, Personen.Voornaam, Personen.tv, Personen.Achternaam, Min(Keuzes.Keuze) AS MinVanKeuze FROM Personen INNER JOIN (Workshops INNER JOIN Keuzes ON Workshops.WorkshopID = Keuzes.WorkshopID) ON Personen.PersoonID = Keuzes.PersoonID GROUP BY Personen.Jaargang, Personen.Voornaam, Personen.tv, Personen.Achternaam ORDER BY Personen.Jaargang DESC , Personen.Achternaam; |
Dit lijkt een aardig goed resultaat te geven. Het probleem treedt op zodra ik de aparte werkgroepindelingen wil oproepen. Ik pas de query dan als volgt aan:
SQL:
1
2
3
4
5
| SELECT Personen.Jaargang, First(Workshops.Workshopnaam) AS EersteVanWorkshopnaam, Personen.Voornaam, Personen.tv, Personen.Achternaam, Min(Keuzes.Keuze) AS MinVanKeuze FROM Personen INNER JOIN (Workshops INNER JOIN Keuzes ON Workshops.WorkshopID = Keuzes.WorkshopID) ON Personen.PersoonID = Keuzes.PersoonID WHERE (((Keuzes.WorkshopID)=2)) GROUP BY Personen.Jaargang, Personen.Voornaam, Personen.tv, Personen.Achternaam ORDER BY Personen.Jaargang DESC , Personen.Achternaam; |
Probleem is dat ik nu ook alle lagere keuzes te zien krijg. Dus dankzij deze query zou iedereen in alle workshops die hij opgegeven heeft geplaatst worden, of dit nu 1e, 2e of 3e keuze is.
Hoe ondervang ik dat probleem nu?? Alvast bedankt voor het meedenken!!