28. oktober 2011 - 09:15Der er
14 kommentarer og 1 løsning
Find gyldige version
Jeg har en tabel der letterer simplificeret kunne se sådan ud
Navn Version Gyldig A 1 ja A 2 nej A 3 ja B 1 ja C 1 ja D 1 ja D 2 nej D 3 ja D 4 nej
Det der er lidt tricky, er at når der bliver oprettet en ny version, forbliver version 1 gyldig, version 2 er "sletningen af 1'eren" og version 3 så den rigtige gyldige. Hvis den så bliver nedlagt er version 4 så sletningen af version tre Jeg har hidtil kun søgt på maks af gyldige version, for at have den seneste gyldige udgave, men hvis jeg kun skal have den seneste eksisterende og gyldige udgave, hvad skal jeg så gøre? I ovennævnte eksempel skulle jeg gerne ende jeg ende ud med en tabel der ser sådan ud
Mød TrackMan og Veo på Computerworld Cloud & AI Festival og hør, hvordan tech ændrer måden, vi træner og udvikler talent – fra skolebold til The Masters.
SELECT Table1.navn, Min(Table1.version) AS MinOfversion, Table1.gyldig FROM Table1 GROUP BY Table1.navn, Table1.gyldig HAVING (((Table1.gyldig)=True));
Det viser dig det højeste gyldige versionsnummer for hvert navn
Synes godt om
Slettet bruger
28. oktober 2011 - 10:02#3
SELECT T1.Navn, T1.Version, T1.Gyldig FROM Table1 AS T1 WHERE T1.Version IN (SELECT Max(Table1.version) AS MaxOfversion FROM Table1 GROUP BY Table1.navn HAVING (((Table1.navn)=T1.Navn))) GROUP BY T1.Navn, T1.Version, T1.Gyldig HAVING (((T1.Gyldig)=True));
version er godt nok tekst (det er trukket ud fra et andet system), men det virker med Max, og je/nej er også tekst, men der må "Ja" vel være lige så godt som true, hvis det havde været ja/nej
Jeg bøvler lidt med paranteserne i denne: WHERE T1.Version IN (SELECT Max(Table1.version) AS MaxOfversion
Der er enten en for meget, hvilken ? eller en for lidt, hvor ? De steder jeg har prøvet med en ekstra, får jeg en syntaksfejl
Synes godt om
Slettet bruger
28. oktober 2011 - 11:20#11
Er det denne forespoergsel du arbejder med..
SELECT T1.Navn, T1.Version, T1.Gyldig FROM Table1 AS T1 WHERE (((T1.Version) In (SELECT Max(Table1.version) AS MaxOfversion FROM Table1 GROUP BY Table1.navn HAVING (((Table1.navn)=T1.Navn))))) GROUP BY T1.Navn, T1.Version, T1.Gyldig HAVING (((T1.Gyldig)="Ja"));
Jeg har fundet parantesen :-) den var liige et par linier længere nede, der havde jeg fjernet en, fordi det så ud som om der var en for mange. Men jeg har ikke lige helt fået det til at virke endnu, fatisk var der ingen hits, og så fik jeg lige slettet det hele. Så der går lige et øjeblik igen, inden jeg ved om det virker
Så fik jeg det hele tastet rigtigt, og det virker, så points og tak for hjælpen :-)
Synes godt om
Slettet bruger
28. oktober 2011 - 11:47#15
!~)
Synes godt om
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.