Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Agrupar resultados por substrings

Estas en el tema de Agrupar resultados por substrings en el foro de Mysql en Foros del Web. Hola a todos. Tengo un dilema que no puedo resolver. Tengo una tabla con accesos a un servidor apache, el los cuales por cada acceso ...
  #1 (permalink)  
Antiguo 17/04/2007, 20:06
Avatar de AleSanchez
Colaborador
 
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires, Argentina
Mensajes: 3.692
Antigüedad: 19 años, 7 meses
Puntos: 47
Agrupar resultados por substrings

Hola a todos.

Tengo un dilema que no puedo resolver.

Tengo una tabla con accesos a un servidor apache, el los cuales por cada acceso me guarda el user agent, que son cosas como esto:

Código:
agent
-------------------------------------------------
Mozilla/4.7 [en] (WinNT; U)
Mozilla/4.0 (compatible; MSIE 5.01; Windows NT)
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; T312461; .NET CLR 1.1.4322)
Mozilla/4.0 (compatible; MSIE 5.0; Windows NT 4.0) Opera 5.11 [en]
Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0.2) Gecko/20030208 Netscape/7.02
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040612 Firefox/0.8
Mozilla/5.0 (compatible; Konqueror/3.2; Linux) (KHTML, like Gecko)
Lynx/2.8.4rel.1 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.6h
Yo lo que quiero, es hacer una consulta que me agrupe para luego sumarlos, por ejemplo, los registros cuyo campo 'agent' contenga cierta cadena, por ejemplo, contar cuantos registros contienen 'msie', cuantos 'firefox', cuantos 'opera' etc.

La respuesta que quisiera seria:

Código:
cantAgent agentString
----------------------------------------
3532 msie
5435 firefox
6463 opera
1263 konqueror
etc etc
¿Me entienden?
__________________
¡Volviendo a la programación!
  #2 (permalink)  
Antiguo 18/04/2007, 03:19
Avatar de Lord of freaks  
Fecha de Ingreso: octubre-2004
Ubicación: Madrid
Mensajes: 334
Antigüedad: 19 años, 6 meses
Puntos: 2
Re: Agrupar resultados por substrings

Hola AleSanchez

Prueba con esto
Código:
SELECT 
count(*) as total,
agent 
FROM 
acessos 
GROUP BY 
agent 
HAVING 
lower(agent) RLIKE '(msie|firefox|opera|konqueror)'
La expresión regular no se si es correcta porque no soy muy bueno con ellas, pero vamos la idea es hacer una que contenga las cadenas que deben coincidir.

Un saludo
__________________
Una vez un elemental de rayos mató una tribu entera de tritones.

¡¡ El sólo quería darse un baño !!

http://www.frikilandia.com

Neither Fu Nor Fa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:07.