Voor m'n werk ben ik bezig het gehele personeelsbestand in een database te plaatsen. Vanwege de beperkte mogelijkheden en een weigerachtige automatiseringsafdeling(ik ben daar niet aangenomen voor de IT, maar vanwege enige ervaring en gerelateerde studie ben ik gepromoveerd tot technicus) ben ik genoodzaakt dit in Access te doen (wat overigens best voldoet voor de situatie).
Nu heb ik de basis van database-ontwerp (normalisatie, SQL etc.) redelijk onder de knie. Echter, ik loop nu tegen een query aan die ik nog niet de baas ben.
Wat is het probleem:
Het bedrijf waar het om gaat is een call-center. De medewerkers (Agents) worden om de zoveel tijd beoordeeld. De gegevens van de Agents worden opgeslagen in de tabel Agent. Voor het gemak beperken we die gegevens tot Voornaam en Achternaam De primaire sleutel is AgentID. Beoordelingen worden opgeslagen in de tabel Beoordelingen (verassend
) met als primaire sleutel BeoordelingID. Verder staat er in die tabel Cijfer, Datum en heel belangrijk: AgentID.
Voor de bedrijfsvoering is het belangrijk dat we weten wanneer de laatste beoordeling van een Agent geweest is. In de tabel Beoordelingen staan dus verschillende beoordelingen met een identiek AgentID en verschillende Datum. Deze laatste beoordelingen per agent moeten in een lijst komen te staan voor alle agents, met de minst recente beoordeling bovenaan. Deze moet immers het snelst weer beoordeeld worden.
De query moet dus de voornaam en de achternaam van de Agents, en de datum van de laatste beoordeling geven.
Zoals:
De volgende query had ik daarvoor bedacht:
Dit werkt echter niet, nu krijg ik nog steeds meerdere data voor een agent. Toevoegen van keyword DISTINCT brengt ook geen verlichting...
Wie o wie helpt me????
Nu heb ik de basis van database-ontwerp (normalisatie, SQL etc.) redelijk onder de knie. Echter, ik loop nu tegen een query aan die ik nog niet de baas ben.
Wat is het probleem:
Het bedrijf waar het om gaat is een call-center. De medewerkers (Agents) worden om de zoveel tijd beoordeeld. De gegevens van de Agents worden opgeslagen in de tabel Agent. Voor het gemak beperken we die gegevens tot Voornaam en Achternaam De primaire sleutel is AgentID. Beoordelingen worden opgeslagen in de tabel Beoordelingen (verassend
Voor de bedrijfsvoering is het belangrijk dat we weten wanneer de laatste beoordeling van een Agent geweest is. In de tabel Beoordelingen staan dus verschillende beoordelingen met een identiek AgentID en verschillende Datum. Deze laatste beoordelingen per agent moeten in een lijst komen te staan voor alle agents, met de minst recente beoordeling bovenaan. Deze moet immers het snelst weer beoordeeld worden.
De query moet dus de voornaam en de achternaam van de Agents, en de datum van de laatste beoordeling geven.
Zoals:
code:
1
2
| Pietje Pietersen 12-3-01 Frits Arends 15-5-01 |
De volgende query had ik daarvoor bedacht:
code:
1
2
3
4
5
6
| SELECT a.Achternaam, a.Voornaam, max(b.Datum) FROM Agent a, Beoordelingen b WHERE a.AgentID = b.AgentID GROUP BY a.Achternaam, a.Voornaam, b.Datum SORT BY b.Datum ASC ; |
Dit werkt echter niet, nu krijg ik nog steeds meerdere data voor een agent. Toevoegen van keyword DISTINCT brengt ook geen verlichting...
Wie o wie helpt me????