Avatar billede mhaahr001 Nybegynder
23. januar 2011 - 23:14 Der er 4 kommentarer

MySQL Having

Min tabel indeholder følgende felter:
id (heltal)
ip (ip-adresse)
tid (dato, Y-m-d)

Nu har jeg så brug for at finde antallet af gange en IP fremtræder, og liste den efter hvilken der har optrådt flest gange.

Dette virker:
SELECT ip, COUNT(id) AS count1 FROM login GROUP BY ip HAVING count1>=250 ORDER BY count1 DESC

Så har jeg brug for at finde den med flest logins den seneste måned. Dette virker ikke:
SELECT ip, COUNT(id) AS count1 FROM login GROUP BY ip HAVING tid >= '2010-12-23' AND count1>=250 ORDER BY count1 DESC

Oventsående giver mig: "Unknown column 'tid' in 'having clause'"

Dette virker heller ikke:
SELECT ip, COUNT(id) AS count1, tid FROM login GROUP BY ip HAVING tid >= '2010-12-23' AND count1>=250 ORDER BY count1 DESC

Ovenstående giver et resultat, men resultatet er forkert. Jeg kan manuelt tælle en bestemt IP-adresse, der fremgår 516 gange i perioden, men den fremkommer ikke på listen... Jeg tror det har noget at gøre med at "tid" bliver inkluderet i SELECT... Men uden virker det heller ikke... Gode råd?
Avatar billede erikjacobsen Ekspert
23. januar 2011 - 23:56 #1
Din tid >= '2010-12-23' skal nok bare ind i en almindelig WHERE
Avatar billede erikjacobsen Ekspert
23. januar 2011 - 23:57 #2
Sådan lidt firkantet:

  WHERE til betingelser der kan (og skal) udregnes før GROUP BY
  HAVING til betingelser der kun kan udregnes efter GROUP BY
Avatar billede mhaahr001 Nybegynder
24. januar 2011 - 00:11 #3
Tak for hintet. Havde indsat WHERE efter HAVING... Nu prøvede jeg før GROUP BY.. Og straks virker det.. Nice :) - Kom med et svar :)
Avatar billede erikjacobsen Ekspert
24. januar 2011 - 09:42 #4
Ja, rækkefølgen er vigtig.

Jeg samler ikke på point, tak. Svar selv, og accepter eget svar.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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