Avatar billede ugotabe_kidding Nybegynder
26. august 2004 - 07:37 Der er 6 kommentarer og
1 løsning

Vis Max(Dato) og andre kolonner

Jeg har et lille SQL problem.

Jeg ønsker at udskrive den største dato fra en tabel, men også de andre værdier for den record, hvor datoen er størst. Jeg forsøgte med:
"SELECT Max(Date), Name, Description FROM tblUpdateTypes WHERE TypeID = 1"
Jeg kan dog kun få lov til at udskrive Max(Date) - så snart jeg vil have flere felter med i mit output fejler den.

Hvordan løser jeg dette lille problem? Max(Date) er jo relateret til en bestemt record - det er ikke det samme som at sige Count(*) eller andre af den slags kommandoer, vel?
Avatar billede Slettet bruger
26. august 2004 - 07:43 #1
Vil "SELECT Top 1 (Date, Name, Description) FROM tblUpdateTypes WHERE TypeID = 1 ORDER By Date DESC" ikke kunne bruges?

(Syntax for TOP er måske forkert (er lidt rusten), men alternativt kan du bare kigge på den første record, og lade være med at loope videre gennem resultsættet.)

Prøv ect også (skud i tågen - kan ikke lige teste det lige nu): "SELECT Max(Date) as MaxDate, Name, Description FROM tblUpdateTypes WHERE TypeID = 1"
Avatar billede Slettet bruger
26. august 2004 - 07:45 #2
Dvs. i stedet for at kalde ResultSet("Date") skal du kalde ResultSet("MaxDate") - glemte jeg lige at få med :)
Avatar billede ugotabe_kidding Nybegynder
26. august 2004 - 07:45 #3
Tak for superhurtigt svar - Jeg har prøvet flere gange med mulighed 2, men får følgende fejl:
Column 'tblUpdates.Name' is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause.

Prøver lige mulighed 1 ;o)
Avatar billede Slettet bruger
26. august 2004 - 08:02 #4
Prøv lige engang at: "SELECT Max(Date) as MaxDate, Name, Description FROM tblUpdateTypes WHERE TypeID = 1 GROUP BY MaxDate"
Avatar billede ugotabe_kidding Nybegynder
26. august 2004 - 08:03 #5
Og mulighed virker - dog med en mindre modifikation ;o)

Syntaksen er tilsyneladende "SELECT Top 1(Date), Name, Description FROM...."

Men jeg takker for din hjælp - as usual - Eksperten to the rescue ;o)

Smider du et svar?

Mvh
/U.K.
Avatar billede Slettet bruger
26. august 2004 - 08:05 #6
Yup - ville dog lige for nysgerriheds skyld gerne vide om mit seneste forslag virker, hvis du har tid. Men det er op til dig.

Svar ;)
Avatar billede ugotabe_kidding Nybegynder
26. august 2004 - 08:12 #7
Det gjorde det ikke, desværre - det den løsning har jeg selv rodet med i lang tid - både med og uden Group By... Endvidere er der den benefit ved Top 1 (som jeg ikke kendte til i forvejen, tak), at hvis hvis ingen records findes (rs.EOF eller rs.BOF) kan den fanges i Top 1 og man kan skrive en "fejlmeddelelse" til brugeren. Det kan man ikke med Max() - den returnerer åbenbart et eller andet - selv hvis der ikke er nogen records?
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
Kurser inden for grundlæggende programmering

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