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

Tomar el valor más repetido de un GROUP (MySQL)

Estas en el tema de Tomar el valor más repetido de un GROUP (MySQL) en el foro de Bases de Datos General en Foros del Web. Hola, tengo una duda algo difícil de explicar. Resulta que en la tabla de usuarios, cada usuario tiene como datos el país, la comunidad y ...
  #1 (permalink)  
Antiguo 25/08/2010, 06:15
 
Fecha de Ingreso: junio-2007
Ubicación: Sabadell, BCN
Mensajes: 95
Antigüedad: 16 años, 10 meses
Puntos: 1
Pregunta Tomar el valor más repetido de un GROUP (MySQL)

Hola, tengo una duda algo difícil de explicar. Resulta que en la tabla de usuarios, cada usuario tiene como datos el país, la comunidad y la ciudad donde vive.

En mi página hay un apartado de estadísticas, donde, por orden, se muestran todas las ciudades según los usuarios que viven en ellas. Para mostrarlas, lo hago con la siguiente consulta:

Código PHP:
SELECT ciudadCOUNT(ciudad) AS numbercomunidadpais FROM users GROUP BY ciudad ORDER BY number DESC 
Cómo veis, quedan todos los usuarios agrupados por ciudades y tambien se muestra el número de usuarios que hay en cada ciudad. Ahora bien, para mostrar en qué comunidad y en qué país está la ciudad, se mostrará el valor del primer acierto de cada grupo.

Por ejemplo, si el primer usuario de Barcelona va mal de geografía y ha escrito que es de la Comunidad de Madrid, se mostrará esta ciudad cómo si fuese de madrid, independientemente que los demás usuarios hayan introducido la comunidad correcta.

Para evitar esto, había pensado mostrar el valor de la comunidad que más se repita, pero no sé si eso se podría hacer con una consulta o si hay algún modo de sacar un array con todas las comunidades introducidas por ciudad y luego con PHP buscar el que más se repita.

Alguna solución?

Gracias
  #2 (permalink)  
Antiguo 25/08/2010, 07:34
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Tomar el valor más repetido de un GROUP (MySQL)

Carlillus
Cuando se habla de normalizacion de bases de datos, mucha gente pasa por alto el tema. Pero este caso es un claro ejemplo del mal diseño de tu base de datos. Cuando quieres sacar este tipo de reportes la cosa se puede tornar muy compleja y de trabajo innecesario de programación para tener en cuenta todos los posibles errores de usuario. Imaginate que ingrese en vez de barcelona, barselona(Un usuario con muy mala ortografia ) van a ser usuarios diferentes.

Te doy dos consejos.
1. Normaliza tu base de datos y migra correctamente los datos existentes. Te tomará un poco de tiempo, pero será bien invertido para un futuro. Con normalizacion me refiero a que te crees una tabla pais, otra comunidad y otra cuidad y que las codifiques y las enlaces correctamente a tu tabla de usuarios.

2. Si definitivamente no tienes tiempo y es un reporte urgente, te recomiendo preguntes en el foro de php como podrías solucionar el problema. Desde el motor de base de datos, la consulta sería monstruosa y muy pero muy ineficiente.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: group, mysql, repetido, tomar
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 22:47.