30. januar 2018 - 12:06Der er
11 kommentarer og 1 løsning
Udtræk fra database.
Har en vagt database, forenkelet se den sådan ud. Person,dato,rettet. 1,2018-04-04,2018-01-01 2,2018-04-05,2018-01-01 3,2018-04-06,2018-01-01 2,2018-04-04,2018-03-03
i sidste linje har person nummer 2 overtaget en vagt den 2018-04-04, for at gemme historikken er den oprette som en ny række hvor rettet tabellen er nyere en den oprindelige vagt.
Nu vil jeg gerne have en udtræk over alle de dage i 2018 hvor person nummer 1 har vagt.
SELECT * FROM 'vagt' WHERE 'dato' <= '2018-01-01' AND 'person' = 1 Denne SELECT medtager selvfølgeligt også den 2018-04-04 hvor han ikke længere har vagt. Hvordan får jeg skrevet min SELECT så det kun tager de datoer med, hvor rettet tabellen er den nyest dato.
Kan du forklare nærmere hvad "så det kun tager de datoer med, hvor rettet tabellen er den nyest dato" betyder? Jeg har vist ikke helt forstået datastrukturen.
Vil du have dem ud hvor rettet er lig med den højeste rettet-dato i tabellen? Eller den ene række fra en bruger hvor rettet er højst? Eller noget helt andet?
ja, så person nummer 2 har overtaget vagten den 2018-04-04 og ændringen er lavet den 2018-03-03. Så det er den nyeste rettelse/registrering der gælder.
SELECT * FROM vagt WHERE person = 1 AND rettet = ( SELECT MAX(rettet) FROM test WHERE person = 1 )
Men du vil jo støde ind i problemer, hvis personen har rettet flere forskellige vagter til forskellige tider, da du kun får dem med den højeste tid. Umiddelbart virker det som om tabellen kunne designes bedre.
SELECT v.id,v.person,v.dato,v.rettet FROM ( SELECT dato,max(rettet) AS maxrettet FROM vagt GROUP BY dato ) AS x LEFT JOIN vagt AS v ON x.dato = v.dato AND x.maxrettet = v.rettet WHERE person = 1 AND DATE_FORMAT(v.dato, "%Y") = 2018;
I linket er der også forklaret andre måder at opnå det samme på.
Synes godt om
1 synes godt om dette
Ny brugerNybegynder
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.