Avatar billede davidfossil Nybegynder
15. september 2004 - 08:01 Der er 6 kommentarer og
1 løsning

Hente de andre felter hvor id=MAX(id)

Jeg vil gerne trække alle rækkerne fra en tabel ud, og så (vha. JOIN, GRUOP BY) finde den række i en anden tabel der har den højeste værdi i MAX(id). Det er nemt nok at finde denne MAX værdi for "id"-feltet, men hvad når jeg gerne vil have værdierne for de andre felter i rækken hvor id er MAX?
Avatar billede arne_v Ekspert
15. september 2004 - 08:16 #1
Det er nemt i MS SQL eller i MySQL 4.1, men jeg mener ikke at man kan i
MySQL 3.x og 4.0
Avatar billede davidfossil Nybegynder
15. september 2004 - 08:45 #2
Det er også hvad jeg selv har fundet frem til på MySQL's egen hjemmeside.

På samme måde burde det spørgsmål jeg stilte den anden dag også kunne løses med en subquery, men desværre kører min udbyder med version 4.0.xx :o(

Enten skal jeg altså finde en midlertidig løsning (enten nogle vilde joins, eller mange kald der bliver samlet i en ny tabel i selve programkoden) ellers må jeg blot vente på at de installerer 4.1 eller nyere.

Har netop skrevet og spurgt Web10 om de har nogen som helst idé om hvornår 4.1 kunne finde vej til deres servere ... :)
Avatar billede arne_v Ekspert
15. september 2004 - 08:51 #3
Altså lige netop den her kan jo laves med 2 ret simple queries.

SELECT MAX(felt) FROM tabel

og

SELECT andetfelt FROM tabel WHERE felt=X
Avatar billede davidfossil Nybegynder
15. september 2004 - 09:45 #4
Problemet er at det godt kan bliver til ret mange database-kald hvis nu forestiller os at der er 100 rækker i den første tabel jeg trækker ud. Der skal vel kaldes en gang ekstra pr. række, hvilket vil løbe op i 101 kald... Det ville være federe med ét enkelt, som man vist kan få lov til i MySql 4.1 :o)
Avatar billede arne_v Ekspert
15. september 2004 - 23:49 #5
Ah ja. Hvis den første er med GROUP BY og du skal have en SELECT per række, så
bliver det til en del.

Men også der er der muligheder:

SELECT x,MAX(y) FROM tabel GROUP BY x

SELECT z FROM tabel WHERE x IN (a,b,c,d,e,f)

hvor værdierne er alle x værdierne

så er det stadig kun 2 queries
Avatar billede arne_v Ekspert
18. september 2004 - 14:55 #6
OK ?
Avatar billede davidfossil Nybegynder
19. september 2004 - 17:29 #7
Jeg ved ikke om jeg vil benytte mig af dit sidste forslag, eller blot vente på at udbyderen skifter til 4.1 eller nyere...

Anyway, mange tak for hjælpen :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
Computerworld tilbyder specialiserede kurser i database-management

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