webForumDet fria alternativet

Plocka ut alla rader som har maxvärdet?

6 svar · 293 visningar · startad av COOBRAA

COOBRAAMedlem sedan nov. 200416 inlägg
#1

Försöker med följande sats få ut alla rader som har det största värdet i antal_mal (en form av topplista):

SELECT h.namn AS namn, COUNT( malskytt ) AS antal_mal
FROM `tbl_spelare` h
INNER JOIN tbl_malassist m ON h.spelar_id = m.malskytt
WHERE namn != '-'
GROUP BY namn
HAVING antal_mal = MAX( antal_mal )
LIMIT 0 , 30

lyckas inget vidare, är osäker hur man använder HAVING och MAX-kommandona...

LarsGMedlem sedan dec. 200012 464 inlägg
#2
SELECT h.namn, COUNT( malskytt ) AS antal_mal
FROM `tbl_spelare` h
INNER JOIN tbl_malassist m ON h.spelar_id = m.malskytt
WHERE namn <> '-'
GROUP BY namn
HAVING count(antal_mal) = (select max(c)
from (select count(*) c
from tbl_malassist 
group by malskytt) dt)
LIMIT 0 , 30
COOBRAAMedlem sedan nov. 200416 inlägg
#3

funkar inte alls...

jag har vers 4.0.23 på MySQL, funkar väl inte med nästlade frågor???

LarsGMedlem sedan dec. 200012 464 inlägg
#4

Uppgradera då. Det är länge sedan 4.1 släpptes.

COOBRAAMedlem sedan nov. 200416 inlägg
#5

kan tyvärr inte påverka B-One

K@llenMedlem sedan mars 20032 667 inlägg
#6

COOBRAA skrev:

kan tyvärr inte påverka B-One

Är webbhotellet inte villiga att erbjuda aktuell mjukvara är de inget att betala för. Det är bland annat vid sådana här tillfällen de bra webbhotellen skiljs från de dåliga. ;)

LarsGMedlem sedan dec. 200012 464 inlägg
#7

Så vitt jag förstår så går det inte att få ihop detta i en fråga utan subfrågor. Utan subfrågor är du nog tvungen att skapa en temporärtabell och sedan lagra max-värdet i en variabel och använda den i frågan.

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