webForumDet fria alternativet

Group By och Max

15 svar · 519 visningar · startad av Zerephina

ZerephinaMedlem sedan sep. 2000206 inlägg
#1

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 ;))

Hydr0maticMedlem sedan sep. 2001118 inlägg
#2

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 ..

Jesper TMedlem sedan nov. 20017 144 inlägg
#3

det var inget

ZerephinaMedlem sedan sep. 2000206 inlägg
#4

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 ;)

Hydr0maticMedlem sedan sep. 2001118 inlägg
#5

Vad får du för resultat ?

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

@ndersMedlem sedan juni 200032 969 inlägg
#6

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

ZerephinaMedlem sedan sep. 2000206 inlägg
#7

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...

@ndersMedlem sedan juni 200032 969 inlägg
#8

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

LarsGMedlem sedan dec. 200012 464 inlägg
#9

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
@ndersMedlem sedan juni 200032 969 inlägg
#10

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

ZerephinaMedlem sedan sep. 2000206 inlägg
#11

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'."

@ndersMedlem sedan juni 200032 969 inlägg
#12

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

ZerephinaMedlem sedan sep. 2000206 inlägg
#13

attans också att du gjort det...

ZerephinaMedlem sedan sep. 2000206 inlägg
#14

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*

ZerephinaMedlem sedan sep. 2000206 inlägg
#15

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*

ZerephinaMedlem sedan sep. 2000206 inlägg
#16

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

132 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)