WHERE clause voor COUNT in query

Pagina: 1
Acties:

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 01:34
Ik heb de onderstaande query:

SQL:
1
2
3
SELECT     COUNT(stat_remoteaddr) AS numberofips
FROM         stats
WHERE     (stat_remoteaddr = 'xxx.xxx.xxx.xxx')

Hoe kan ik echter onderstaande query alleen draaien indien de count groter is dan 2?

Heb onderstaande al geprobeerd maar dat werkt/kan helaas niet:
SQL:
1
2
3
SELECT     COUNT(stat_remoteaddr) AS numberofips
FROM         stats
WHERE     (stat_remoteaddr = 'xxx.xxx.xxx.xxx') AND COUNT(stat_remoteaddr) > 2

en
SQL:
1
2
3
SELECT     COUNT(stat_remoteaddr) AS numberofips
FROM         stats
WHERE     (stat_remoteaddr = 'xxx.xxx.xxx.xxx') AND numberofips > 2

_/-\o_

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Je zoekt naar een group by icm. een having clausule.

Who is John Galt?


  • Joad
  • Registratie: December 2000
  • Laatst online: 22-09-2025

Joad

Dat kan

Kijk eens naar HAVING

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 10:35
Mijn SQL is al tijden niet meer van een hoog nivo, maar je zult het moeten zoeken in GROUP BY icm HAVING.

Dus iets als het volgende toevoegen.:
GROUP BY numberofips
HAVING COUNT(stat_remoteaddr) > 2

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 22-04 17:52

Dido

heforshe

Een Count zonder veld om op te grouperen... dat kan wel, maar dan betekent "onderstaande query alleen draaien indien de count groter is dan 2?" niet zo veel. Immers, je weet pas wat die count is als je hem draait, dus dan kun je het applicatief afvangen.

Je kunt ook iets doen als
SQL:
1
2
3
4
5
  SELECT stat_remoteaddr, COUNT(stat_remoteaddr) AS numberofips
    FROM stats
   WHERE stat_remoteaddr = 'xxx.xxx.xxx.xxx'
GROUP BY stat_remoteaddr
  HAVING COUNT(stat_remoteaddr) > 2


(@ hierboven: group by numberofips kan helemaal niet ;) )

[ Voor 3% gewijzigd door Dido op 21-11-2005 13:13 ]

Wat betekent mijn avatar?


  • Urk
  • Registratie: Maart 2000
  • Laatst online: 01:34
Thanks allemaal, inderdaad werkt GROUP BY numberofips niet, zoals Sybr_E-N zegt. Maar toch is het allemaal gelukt, en het werkt nog snel ook. Heb het helemaal anders gedaan...
De query is nu als volgt:

SQL:
1
2
3
4
5
SELECT DISTINCT stat_remoteaddr, COUNT(stat_remoteaddr) AS numberofips
FROM sitestats
GROUP BY stat_remoteaddr
HAVING (COUNT(stat_remoteaddr) > 2)
ORDER BY numberofips DESC

_/-\o_

[ Voor 8% gewijzigd door Urk op 21-11-2005 13:25 ]


  • Urk
  • Registratie: Maart 2000
  • Laatst online: 01:34
Toch nog een aanvullende vraag hierop.
Kan ik ook een WHERE clause inbouwen in bovenstaande query?

Zoals bijv:
SQL:
1
2
3
4
5
6
7
SELECT DISTINCT sitestat_remoteaddr, COUNT(sitestat_remoteaddr) AS numberofips, useragent_robot
FROM sitestats
INNER JOIN useragents ON sitestats.sitestat_useragent = useragents.useragent_id
WHERE useragent_robot = 0
GROUP BY sitestat_remoteaddr
HAVING (COUNT(sitestat_remoteaddr) > 2)
ORDER BY numberofips DESC

bovenstaande query werkt niet, misschien logisch maar is het toch mogelijk een aantal records uit te sluiten van bovenstaande query? Als useragent_robot dus 0 is?

[ Voor 16% gewijzigd door Urk op 21-11-2005 13:40 ]


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Kort maar krachtig: Ja, dat kan.

Waarom test je het niet even, dat is nog minder werk dan het hier posten?

Oops! Google Chrome could not find www.rijks%20museum.nl


  • Urk
  • Registratie: Maart 2000
  • Laatst online: 01:34
P_de_B schreef op maandag 21 november 2005 @ 13:40:
Kort maar krachtig: Ja, dat kan.

Waarom test je het niet even, dat is nog minder werk dan het hier posten?
Zie mijn toevoegen hierboven (edit). Query werkt dus niet... had het natuurlijk al geprobeerd :)

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Urk schreef op maandag 21 november 2005 @ 13:41:
[...]

Zie mijn toevoegen hierboven (edit). Query werkt dus niet... had het natuurlijk al geprobeerd :)
Je hoeft useragent_robot niet in de select op te nemen, en als je het wel doet moet je hem ook in de group by op te nemen.

Oops! Google Chrome could not find www.rijks%20museum.nl


  • Urk
  • Registratie: Maart 2000
  • Laatst online: 01:34
Top, sorry, kreeg een foutmelding door een tikfoutje. Had niet goed genoeg gekeken.. |:(
De query is nu helemaal compleet en als volgt:
SQL:
1
2
3
4
5
6
7
SELECT DISTINCT sitestats.sitestat_remoteaddr, COUNT(sitestats.sitestat_remoteaddr) AS numberofips
FROM sitestats
INNER JOIN useragents ON sitestats.sitestat_useragent = useragents.useragent_id
WHERE (useragents.useragent_robot = 0)
GROUP BY sitestats.sitestat_remoteaddr
HAVING (COUNT(sitestats.sitestat_remoteaddr) > 2)
ORDER BY numberofips DESC

_/-\o_
Pagina: 1