|
| Hjælp til et SQL-kald Fra : news.cybercity.dk |
Dato : 24-11-06 11:59 |
|
Hej
Jeg har brug for hjælp til et kald, som jeg synes burde være simpelt, men
jeg kan ikke regne ud, hvordan det skal være!
Eksempel:
Navn Nummer
Jens 3
Jens 5
Ib 6
Jens 12
Ib 4
Jeg vil nu gerne hive det højeste tal ud for hver navn. Altså kun et
resultat for hver navn. Resultatet af eksemplet skal gerne være:
Navn Nummer
Jens 12
Ib 6
Men hvordan fa'en skal sql-forspørgslen lyde?
/Morten
| |
Thorbjørn Ravn Ander~ (24-11-2006)
| Kommentar Fra : Thorbjørn Ravn Ander~ |
Dato : 24-11-06 12:10 |
|
"news.cybercity.dk" <mhj @ solisimo . dk> writes:
> Navn Nummer
> Jens 12
> Ib 6
>
> Men hvordan fa'en skal sql-forspørgslen lyde?
En kombination af MAX() og GROUP BY?
--
Thorbjørn Ravn Andersen
| |
Martin Christensen (24-11-2006)
| Kommentar Fra : Martin Christensen |
Dato : 24-11-06 12:21 |
|
"news.cybercity.dk" <mhj @ solisimo . dk> writes:
> Navn Nummer
> Jens 12
> Ib 6
SELECT navn, max(nummer) FROM tabel GROUP BY navn
Martin
| |
news.cybercity.dk (24-11-2006)
| Kommentar Fra : news.cybercity.dk |
Dato : 24-11-06 12:45 |
|
Hej Martin
Den virker på det eksempel jeg gav, men hvis der kommer en kolonne mere på,
som også skal hives ud, så returneres alle linier.
Altså hvis eksemplet ser sådan ud:
navn nummer1 nummer2
og jeg gerne vil hive et navn og nummer2 ud for hver navn med højeste
nummer1. Dvs. samme som oprindelige eksempel, men med en kolonne mere.
/Morten
"Martin Christensen" <martin.sand.christensen@gmail.com> skrev i en
meddelelse news:87psbdxf8n.fsf@fangorn.rev.stofanet.dk...
> "news.cybercity.dk" <mhj @ solisimo . dk> writes:
>> Navn Nummer
>> Jens 12
>> Ib 6
>
> SELECT navn, max(nummer) FROM tabel GROUP BY navn
>
> Martin
| |
Thorkil Olesen (27-11-2006)
| Kommentar Fra : Thorkil Olesen |
Dato : 27-11-06 21:07 |
|
news.cybercity.dk <mhj@solisimo.dk> wrote:
> Den virker på det eksempel jeg gav, men hvis der kommer en kolonne mere på,
> som også skal hives ud, så returneres alle linier.
>
> Altså hvis eksemplet ser sådan ud:
>
> navn nummer1 nummer2
>
> og jeg gerne vil hive et navn og nummer2 ud for hver navn med højeste
> nummer1. Dvs. samme som oprindelige eksempel, men med en kolonne mere.
Det er et klassisk spørgsmål, som har været behandlet før. Her er et
forslag.
SELECT navn, nummer1, nummer2 FROM tabel NATURAL JOIN
( SELECT navn, max(nummer1) as nummer1 FROM tabel GROUP BY navn ) as t2;
--
Thorkil Olesen,
Hanstholm.
| |
Martin Christensen (24-11-2006)
| Kommentar Fra : Martin Christensen |
Dato : 24-11-06 16:33 |
|
"news.cybercity.dk" <mhj @ solisimo . dk> writes:
> Den virker på det eksempel jeg gav, men hvis der kommer en kolonne
> mere på, som også skal hives ud, så returneres alle linier.
Jeg er sikker på, at GROUP BY-klausulen er beskrevet et eller andet
sted på Internettet eller i manualen til din DBMS. Et hurtigt opslag
ville fortælle dig, at når der er en GROUP BY-klausul, skal alle
felter i resultatet enten bruges i grupperingen eller være aggregater.
Martin
| |
|
|