Avatar billede tdh1309 Juniormester
18. marts 2011 - 10:04 Der er 8 kommentarer og
1 løsning

Querry - hjælp!

Hej

Jeg er efterhånden rimelig rusten i at konstruere querries!
Håber at en af jer kan hjælpe.
Nedenfor er et eksempel på en simpeltabel, og det ønskede resultat.

Jeg ønsker at finde ID på den maksimale højede, for hvert køn

ID    Køn    Højde
1    m    120
2    m    140
3    k    130
4    m    165
5    k    102
6    k    139

Ønsket resultat:
ID    Køn    Høje
4    m    165
6    k    139
Avatar billede phillips Nybegynder
18. marts 2011 - 10:14 #1
[code]
SELECT id, sex, MAX( height ) AS height
FROM table
GROUP BY sex
[/code]

Erstat med egne kolonne- og tabelnavne ;-)
Avatar billede pgroen Nybegynder
18. marts 2011 - 10:32 #2
Njah, ikke helt - hvis man skal have id'en med, må man lave oget i stil med:

SELECT t.*
  FROM simpeltabel t,
      (SELECT sex, MAX(height) AS height
          FROM simpeltabel
        GROUP BY sex) tmax
WHERE t.sex = tmax.sex
  AND t.height = tmax.height
Avatar billede phillips Nybegynder
18. marts 2011 - 10:37 #3
Pgroen, er det ikke at overkomplicere det? Query'en i #1 giver nøjagtigt det ønskede resultat med id, køn og højde for hhv. m og k.
Avatar billede tdh1309 Juniormester
18. marts 2011 - 10:43 #4
Hej "phillips"

Tak for det hurtige svar, men der er lidt problemer.
1) Jeg tester i MS Acces med querry:
SELECT id, sex, MAX( height ) AS Mheight
FROM TestTab
GROUP BY sex

Det fejler:"You tried to execute a query that does not include the secified expressen 'id' as part of an aggregate function"

Det kan løse ved at droppe id, så jeg har:
SELECT id, sex, MAX( height ) AS Mheight
FROM TestTab
GROUP BY sex

2) Når "Group by" anvendes kan jeg ikke sætte where clause på

Jeg havde forestillet mig at løsningen ville bestå af en join.

Måske er problemet bare at jeg tester i Access, men lige en hurtig tilbage melding fra mig!
Jeg kigger selv nærmere på det, og melder tilbage når jeg ved mere! Input modtages dog stadig gerne :-)
Derudover skal du være opmærksom på at eksemplet er meget simpelt, og at min tabel er mere kompleks!
Avatar billede phillips Nybegynder
18. marts 2011 - 10:46 #5
Ah, jeg troede vi snakkede MySQL - ups :-)
Avatar billede tdh1309 Juniormester
18. marts 2011 - 10:55 #6
Hej Phillips

Det er bare generelt - så MySQL er fint fint!
Hvis i lige begge opretter et svar - så kan vi afregne

Og tak for meget hurtig respons!
Avatar billede pgroen Nybegynder
18. marts 2011 - 10:59 #7
Philips,

Nu kender jeg ikke til MySQL syntax, men uanset hvilken database vi taler om, har jeg svært ved at se, hvordan du skulle kunne få ID med i din query...
Avatar billede phillips Nybegynder
18. marts 2011 - 11:05 #8
Så har jeg misforstået spørgsmålet? Jeg fik dette til at virke i MySQL:

http://img813.imageshack.us/i/querytest.png/
Avatar billede pgroen Nybegynder
18. marts 2011 - 12:09 #9
Touché, sorry - jeg skal fremover afholde mig fra at udtale mig så skråsikkert om ting, jeg tydeligvis ikke har en skid forstand på :-)
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