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

Mostrar tambien grupos sin usuarios

Estas en el tema de Mostrar tambien grupos sin usuarios en el foro de Mysql en Foros del Web. Hola amigos como estais, Vereis tengo este sql que me muestra todos los grupos que tienen usuarios y el numero de usuarios de cada grupo, ...
  #1 (permalink)  
Antiguo 15/03/2011, 05:23
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
Mostrar tambien grupos sin usuarios

Hola amigos como estais,

Vereis tengo este sql que me muestra todos los grupos que tienen usuarios y el numero de usuarios de cada grupo, pero no lo que necesito es que tambien me muestre los grupos que no tienen ningun usuario.

SELECT *, count(*) AS numero_usuarios FROM usuarios t1 INNER JOIN grupos t2 ON t1.Ngrupo = t2.Ngrupo GROUP BY t1.Ngrupo ORDER BY t2.Nombregrupo, t2.Localidad

He probado a modificar la consulta pero no hay manera a ver si alguien tiene alguna solucion,

Gracias desde ya
  #2 (permalink)  
Antiguo 15/03/2011, 05:31
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 3 meses
Puntos: 89
Respuesta: Mostrar tambien grupos sin usuarios

Utiliza un RIGHT JOIN (o cambia el orden de las tablas y usa un LEFT JOIN) en vez de un INNER JOIN

Código SQL:
Ver original
  1. SELECT *, COUNT(*) AS numero_usuarios
  2. FROM usuarios t1
  3. RIGHT JOIN grupos t2 ON
  4. t1.Ngrupo = t2.Ngrupo
  5. GROUP BY t1.Ngrupo
  6. ORDER BY t2.Nombregrupo, t2.Localidad

Código SQL:
Ver original
  1. SELECT *, COUNT(*) AS numero_usuarios
  2. FROM grupos t2
  3. LEFT JOIN usuarios t1 ON
  4. t2.Ngrupo = t1.Ngrupo
  5. GROUP BY t1.Ngrupo
  6. ORDER BY t2.Nombregrupo, t2.Localidad
  #3 (permalink)  
Antiguo 15/03/2011, 05:40
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: Mostrar tambien grupos sin usuarios

Hola amigo heimish gracias por tu atencion,

acabo de utilizar el RIGHT JOIN y enefecto esta mostrando el grupo que no tiene ningun usuario pero esta contabilizando que tiene un usuario cuando no es cierto, a que puede ser debido?

Un saludo amigo
  #4 (permalink)  
Antiguo 15/03/2011, 05:46
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: Mostrar tambien grupos sin usuarios

Si enefecto, pegando cualquiera de los dos sql muesta los grupos y cuenta los usuarios de cada uno pero los grupos que no tienen usuarios les contabiliza uno.

Que raro esto no
  #5 (permalink)  
Antiguo 15/03/2011, 05:51
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Mostrar tambien grupos sin usuarios

No, porque en ese caso lo que está contando es la cantidad de grupos. para que cuente sólo los usuarios hay que hacer que cuente un campo específico (los NULL no se cuentan):
Código MySQL:
Ver original
  1. SELECT *, COUNT(t1.Ngrupo) numero_usuarios
  2. FROM grupos t2  LEFT JOIN usuarios t1 ON t2.Ngrupo = t1.Ngrupo
  3. GROUP BY t2.Ngrupo
  4. ORDER BY t2.Nombregrupo, t2.Localidad
Tampoco puedes usar un GROUP BY sobre un campo que puede devolver NULL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 15/03/2011, 05:56
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: Mostrar tambien grupos sin usuarios

Hola amigo gnzsoloyo, gracias por tu atencion,

Efectivamente, ese sql funciona a la perfeccion amigo muchas gracias a los dos por vuestra atencion y paciencia.

Es un gusto les felicito

de nuevo gracias

Etiquetas: grupos, usuarios
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 16:43.