---
title: "Group By och Max"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/124953-group-by-och-max"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Zerephina"
published: "2005-03-23T10:57:34.000Z"
updated: "2005-03-23T18:45:10.000Z"
replies: 15
views: 591
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/124953-group-by-och-max"
---

# Group By och Max

## #1 — Zerephina, 2005-03-23T10:57Z

Hopas att jag nu lyckas förklara vad jag vill ha ut...

Ur en tabell så hämtar jag hundnamn, detta är kopplat via ett id nummer till en tabell med resultat.

Som jag får ut nu så listas alla resultat. Dvs har hunden 5 resultat så skriva hunden namn och resultat ut 5 ggr.

Jag skulle vilja at varje namn bara listas en gång per hund och med det resultat som är bäst.

```
SQL = "SELECT h.hund_id, h.hund_namn, j.reg_nr, j.pris " & _
" FROM hundar h, jaktprov j " & _
" WHERE h.hund_namn LIKE 	'" & Request.Form("hund_namn") & "%' " & _
" AND h.hund_id=j.reg_nr " & _
" AND j.pris >= " & Request.Form("jaktprov") & " " & _
" ORDER BY j.pris DESC,h.hund_namn"
```

*(Jag har försökt att snygga till koden lite för att det ska passa bättre här, har ju massor av tab annars... Men vet inte om jag direkt lyckades ;))*

Permalänk: https://www.webforum.nu/p/124953

## #2 — Hydr0matic, 2005-03-23T11:42Z

SQL = "SELECT h.hund_id, h.hund_namn, MAX(j.pris) as maxpris " & \_
" FROM hundar h, jaktprov j " & \_
" WHERE h.hund_namn LIKE 	'" & Request.Form("hund_namn") & "%' " & \_
" AND h.hund_id=j.reg_nr " & \_
" AND j.pris \>= " & Request.Form("jaktprov") & " " & \_
" GROUP BY h.hund_namn ORDER BY maxpris DESC"

Så kanske ? .. gissar lite ..

Permalänk: https://www.webforum.nu/p/1579416

## #3 — Jesper T, 2005-03-23T11:42Z

det var inget

Permalänk: https://www.webforum.nu/p/1579417

## #4 — Zerephina, 2005-03-23T12:02Z

Jag har försökt med MAX() på längden och på tvären utan att få det att fungera... Nått fel gör jag ;)

Permalänk: https://www.webforum.nu/p/1579424

## #5 — Hydr0matic, 2005-03-23T13:17Z

Vad får du för resultat ?

testa ändra följande:
AND maxpris \>= " & Request.Form("jaktprov")

Permalänk: https://www.webforum.nu/p/1579461

## #6 — @nders, 2005-03-23T13:19Z

Redovisa gärna felmeddelande och berätta vad det gäller för dbms.

Permalänk: https://www.webforum.nu/p/1579463

## #7 — Zerephina, 2005-03-23T13:34Z

Ehum.

```
SQL = "SELECT h.hund_id, h.hund_namn, j.reg_nr, MAX(j.pris) as maxpris " & _	
"FROM hundar h, jaktprov j " & _
"WHERE h.hund_namn LIKE 	'" & Request.Form("hund_namn") & "%' " & _
"AND h.hund_id=j.reg_nr " & _
"AND maxpris >= " & Request.Form("jaktprov") & " "
```

Felmed:
Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
\[Microsoft\]\[Drivrutin för ODBC Microsoft Access\] Du försökte köra en fråga med en mängdfunktion som inte innehöll det angivna uttrycket 'hund_id'.
/hittathund.asp, line 20

Jag kör Access lokalt på datorn...

Permalänk: https://www.webforum.nu/p/1579472

## #8 — @nders, 2005-03-23T13:36Z

Alla fält i SELECT, som inte är en mängdfunktion, måste finnas med i GROUP BY, till att börja med.

Permalänk: https://www.webforum.nu/p/1579473

## #9 — LarsG, 2005-03-23T13:46Z

Att använda korrelationsnamn 

```
AND maxpris
```

går inte. Jag förstår heller inte varför du har med både hund_id och reg_nr i select då de ändå alltid har samma värde.

Dvs

```
SQL = "SELECT h.hund_id, h.hund_namn, MAX(j.pris) as maxpris " & _	
"FROM hundar h, jaktprov j " & _
"WHERE h.hund_namn LIKE 	'" & Request.Form("hund_namn") & "%' " & _
"AND h.hund_id=j.reg_nr " & _
"AND j.pris >= " & Request.Form("jaktprov") & 
" group by h.hund_id, h.hund_namn
```

Permalänk: https://www.webforum.nu/p/1579477

## #10 — @nders, 2005-03-23T13:47Z

Jag hade nog provat så här:

```
SQL = "SELECT [b]TOP 1[/b] h.hund_id, h.hund_namn, j.reg_nr, j.pris " & _
" FROM hundar h, jaktprov j " & _
" WHERE h.hund_namn LIKE 	'" & Request.Form("hund_namn") & "%' " & _
" AND h.hund_id=j.reg_nr " & _
" AND j.pris >= " & Request.Form("jaktprov") & " " & _
" ORDER BY j.pris DESC,h.hund_namn"
```

Om du ändå får fler resultat, lägg till något mer att sortera på, som alltid är unikt (ett räknarvärde i någon av tabellerna exempelvis).

mvh

Permalänk: https://www.webforum.nu/p/1579479

## #11 — Zerephina, 2005-03-23T14:01Z

Tack nu lyckades jag med Group By iaf!! Jag började att lägga till alla pg de felmeddelande jag fick, men tyckte att det verkade ologiskt. Då var det ju inte det. Så nu gäller det bara att få ut det högsta resultatet.

Lars G, jag brukar göra så när jag är osäker ;) Då lägger jag till alla parametrera som jag använder bara för att inte sitta och söka efter något som skulle ha skrivits in...

Anders, jag får upp endast en hund när jag testar din kod :) Top 1 antar jag :D

Direkt jag försöker att köra MAX så får jag meddelande: "Du försökte köra en fråga med en mängdfunktion som inte innehöll det angivna uttrycket 'hund_id'."

Permalänk: https://www.webforum.nu/p/1579483

## #12 — @nders, 2005-03-23T14:11Z

Jag ser nu att jag missförstått din fråga en aning. Jag ber att få be om ursäkt för slarvet. :)

Permalänk: https://www.webforum.nu/p/1579485

## #13 — Zerephina, 2005-03-23T14:26Z

attans också att du gjort det...

Permalänk: https://www.webforum.nu/p/1579492

## #14 — Zerephina, 2005-03-23T14:33Z

Genom att sätta GROUP BY och sen HAVING j.pris \>= " & Request.Form("jaktprov") & " så får jag ju fram alla resultat grupperat som är över just det. \*skitirriterad att max inte fungerar\*

Permalänk: https://www.webforum.nu/p/1579499

## #15 — Zerephina, 2005-03-23T15:02Z

Felet är att reg_nr är ett textfält. Jag får det att fungera om jag gör om det till tal. Bara det att det inte går att ändra alla poster till tal eftersom att det finns en bokstav i varje reg.nr \*jaha\*

Permalänk: https://www.webforum.nu/p/1579504

## #16 — Zerephina, 2005-03-23T18:45Z

Jag lyckades lösa det...

```
SELECT h.hund_namn, MAX(j.pris) AS maxpris	
FROM jaktprov j, hundar h
WHERE h.hund_id=j.reg_nr
AND h.hund_id=u.reg_nr
GROUP BY j.pris, h.hund_namn
HAVING j.pris <= "& jaktprov &"
```

I princip så, jag har "tvättat" koden lite och kan ha tappat nån snutt här eller var! :D

Permalänk: https://www.webforum.nu/p/1579604

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/124953-group-by-och-max
