Ik heb twee vragen over queries (die in Access moeten werken).
Voor de volledigheid even de velden van de tabel waar het over gaat. Het is een logfile van gebruik van een elektronisch patientendossier:
ID | patient_registratienummer | gebruiker_code | pcprId | section_id | action | specialisme | parent | responsible_provider_type | datum_tijd
1. Als ik de rij wil hebben NA een bepaalde rij waar ik condities voor opgeef, hoe doe ik dat?
De query is "Welk tabblad wordt het vaakst geopend na (in tijd) het openen van het tabblad 'Decursus'".
Dit dacht ik eerst opgelost te hebben met onderstaande query, waarin ik gebruikmaak van het feit dat ID een unieke waarde is die de volgorde van acties aangeeft:
SELECT section_id, COUNT(*)
FROM EPD
WHERE ID IN (SELECT ID+1 FROM EPD WHERE section_id = 'eadDecursus')
GROUP BY section_id
ORDER BY COUNT(*) DESC
De truc is hier dus ID+1. Het probleem is, dat ik er niet aan dacht dat meerdere mensen tegelijk aan het systeem kunnen zitten. Daarom dacht ik dan wel eventjes te sorteren op gebruiker_code. Het probleem is, dat dan de ID's niet meer op volgorde staan! Dus dan werkt ID+1 niet meer. Hoe krijg ik dan steeds de eerstvolgende rij?
2. Tweede vraag gaat over tijdbestek.
De query: "welke gebruikers doen schrijfacties voor meer dan twee patienten binnen een half uur".
Het eerste probleem is eigenlijk een beetje wiskundig, namelijk dat je geen begintijd weet, maar alleen een eindtijd kan geven voor een gegeven begintijd (die ook uit de log moet komen). Maar daar denk ik zelf wel over na en dan vraag ik hier: hoe kan je een conditie als 'tijd/datum is minder dan een half uur na bepaalde tijd/datum' in SQL zetten? Of misschien moet ik de vraag formuleren als 'hoe tel ik tijd op bij een datum/tijd?'.
Vast hartelijk bedankt als je de moeite neemt me hiermee te helpen.
Voor de volledigheid even de velden van de tabel waar het over gaat. Het is een logfile van gebruik van een elektronisch patientendossier:
ID | patient_registratienummer | gebruiker_code | pcprId | section_id | action | specialisme | parent | responsible_provider_type | datum_tijd
1. Als ik de rij wil hebben NA een bepaalde rij waar ik condities voor opgeef, hoe doe ik dat?
De query is "Welk tabblad wordt het vaakst geopend na (in tijd) het openen van het tabblad 'Decursus'".
Dit dacht ik eerst opgelost te hebben met onderstaande query, waarin ik gebruikmaak van het feit dat ID een unieke waarde is die de volgorde van acties aangeeft:
SELECT section_id, COUNT(*)
FROM EPD
WHERE ID IN (SELECT ID+1 FROM EPD WHERE section_id = 'eadDecursus')
GROUP BY section_id
ORDER BY COUNT(*) DESC
De truc is hier dus ID+1. Het probleem is, dat ik er niet aan dacht dat meerdere mensen tegelijk aan het systeem kunnen zitten. Daarom dacht ik dan wel eventjes te sorteren op gebruiker_code. Het probleem is, dat dan de ID's niet meer op volgorde staan! Dus dan werkt ID+1 niet meer. Hoe krijg ik dan steeds de eerstvolgende rij?
2. Tweede vraag gaat over tijdbestek.
De query: "welke gebruikers doen schrijfacties voor meer dan twee patienten binnen een half uur".
Het eerste probleem is eigenlijk een beetje wiskundig, namelijk dat je geen begintijd weet, maar alleen een eindtijd kan geven voor een gegeven begintijd (die ook uit de log moet komen). Maar daar denk ik zelf wel over na en dan vraag ik hier: hoe kan je een conditie als 'tijd/datum is minder dan een half uur na bepaalde tijd/datum' in SQL zetten? Of misschien moet ik de vraag formuleren als 'hoe tel ik tijd op bij een datum/tijd?'.
Vast hartelijk bedankt als je de moeite neemt me hiermee te helpen.
[ Voor 2% gewijzigd door MarijnvdZaag op 20-04-2010 04:53 . Reden: verduidelijking ]