Avatar billede allanmortensen Nybegynder
05. april 2001 - 16:25 Der er 6 kommentarer og
1 løsning

SELECT med kriterier - HASTER

Jeg har en tabel TimeContainer med bl.a. ID(primær nøgle - autonr), EmployeeID (heltal), TCDate(heltal eks. 20010404) og TIME (heltal/milisekunder eks. 986372155675 timestamp for hvornår denne post er gemt).

Det skal her nævnes at der kan være flere poster med samme TCDate og samme EmployeeID men med forskellige Time.

Eksisterende SQL:

SELECT * FROM tbl_TimeContainer WHERE TCDate >= fromDate AND TCDate <= toDate AND EmployeeID = employeeID ORDER BY TCDate

(fromDate, toDate og employeeID er varibler som trækkes med ind i SQL Statementet fra GUI\'en)

Problem: når jeg nu beder om denne liste giver den mig alle posterne for den valgte  EmployeeID mellem fromDate og toDate dvs. at jeg godt kan ricikere at få flere poster for den samme medarbejder på den samme dag MEN jeg er kun interesseret i at få en post pr. medarbejder pr. dag og det skal være den post som sidst er indtastet dvs. der hvor Time er nyest.... Hvad skal jeg tilføje i min SELECT ???
Avatar billede dudal Nybegynder
05. april 2001 - 16:29 #1
SELECT DISTINCT(EmployeeId), fromdate, todate FROM tbl_TimeContainer WHERE TCDate >= fromDate AND TCDate <= toDate AND EmployeeID = employeeID ORDER BY TCDate

DISTINCT(EmployeeId), fromdate, todate Skal være en liste med alle de felter du skal bruge.
Avatar billede allanmortensen Nybegynder
05. april 2001 - 16:54 #2
Umiddelbart virker den sætning som du har lavet godt.. men når jeg tilføjer Time

SELECT DISTINCT(EmployeeId), fromDate, toDate, TCDate, Time FROM tbl_TimeContainer WHERE TCDate >= fromDate AND TCDate <= toDate AND EmployeeID = 120 ORDER BY TCDate;

bliver bliver flere poster fra samme dag listet da de har forskellige Time...
Avatar billede proaccess Nybegynder
05. april 2001 - 17:26 #3
SELECT EmployeeID, TCDate, Max(Time) AS mTime  FROM tbl_TimeContainer WHERE TCDate Between fromDate And toDate GROUP BY EmployeeId, TCDate
Avatar billede allanmortensen Nybegynder
06. april 2001 - 08:04 #4
Det blev bedre men jeg har stadigvæk problemer... sagen er at jeg har flere felter i tabellen så som TCMeetingTime, TCGoingTime m.fl. hvis disse felter så er indeholder forskellige værdier for den samme EmployeeID og den samme TCDate tager min forespørgsel alle poster med hvor f.eks. TCMeetingTime ikke er ens... men jeg vil kun have en post pr. EmployeeID pr. TCDate og det skal være den hvor Time er nyest som tidligere beskrevet. (iøvrigt skal jeg også have de nye felter med i den sidste linje GROUP BY før jeg kan køre forespørgslen.. ! er det den rigtige måde at gøre det på ?)

SELECT EmployeeID, TCDate, TCMonth, TCYear, TCMeetingTime, Max(TCTypedByTime) AS mTime
FROM tbl_TimeContainer
WHERE TCDate Between fromDate And toDate AND EmployeeID = 120
GROUP BY EmployeeId, TCDate, TCMonth, TCYear, TCMeetingTime;
Avatar billede proaccess Nybegynder
06. april 2001 - 08:47 #5
Du bliver nødt til at lave den forespørgsel, som jeg angav, som den er... Den angiver hvilke records, der skal hentes yderligere oplysninger fra. (jeg går ud fra at du gemmer den som \"qry_mTime\")

Derefter tager du og laver en ny forespørgsel, som så henter de oplysninger, du skal bruge.

SELECT T.* FROM tbl_TimeContainer AS T, qry_mTime AS Q WHERE T.EmployeeID=Q.EmployeeID AND T.TCDate=Q.TCDate AND T.TCTypedByTime=Q.mTime


Avatar billede allanmortensen Nybegynder
06. april 2001 - 09:45 #6
Det ser ud til at virke som det skal... tak for hjæplpen..
Avatar billede proaccess Nybegynder
06. april 2001 - 09:52 #7
Det var så lidt... Det er jo derfor vi er hér ;o)

Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester