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

Problema con join con en tablas

Estas en el tema de Problema con join con en tablas en el foro de Mysql en Foros del Web. Buenas tardes, tengo el siguiente problema, tengo una tabla usuarios y tengo una tabla invitaciones. En la tabla usuarios guardo los datos generales de las ...
  #1 (permalink)  
Antiguo 14/09/2012, 11:51
 
Fecha de Ingreso: mayo-2009
Mensajes: 242
Antigüedad: 14 años, 11 meses
Puntos: 2
Pregunta Problema con join con en tablas

Buenas tardes, tengo el siguiente problema, tengo una tabla usuarios y tengo una tabla invitaciones.

En la tabla usuarios guardo los datos generales de las personas que se egistran en mi sitio web.

En la tabla invitaciones gusrado las invitaciones que envia cada usuario, osea que un usuarios puede tener N invitaciones enviadas en esta tabla.

Mi problema surge cuando quiero hacer una consulta y mostrar todos los usuarios pero que tambien me salga cuantas invitaciones ha enviado cada usuario, yo realizo la siguiente consulta pero solo me arroja los usuarios que tienen invitaciones y los que no han enviado nada no aparecen:

Código:
Consulta:

SELECT usuarios.*,COUNT(tmp_invite.tmp_id) AS total FROM usuarios RIGHT JOIN tmp_invite ON usuarios.id = tmp_invite.who_invites GROUP BY tmp_invite.who_invites ORDER BY total DESC
Alguien podria decirme que estoy haciendo mal en esta consulta porfavor. Gracias de antemano.
  #2 (permalink)  
Antiguo 14/09/2012, 11:59
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Problema con join con en tablas

Código MySQL:
Ver original
  1.   usuarios.*,
  2.   COUNT(tmp_invite.tmp_id) AS total
  3.   usuarios
  4.    tmp_invite
  5. ON usuarios.id = tmp_invite.who_invites
  6. GROUP BY usuarios.id

si quieres que aparezcan todos los usuarios, usas LEFT JOIN y en primer lugar la tabla usuarios. Luego tienes que agrupar por el campo id de esa tabla usuarios, para así evitar agrupar por nulos.
  #3 (permalink)  
Antiguo 15/09/2012, 07:06
 
Fecha de Ingreso: mayo-2009
Mensajes: 242
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: Problema con join con en tablas

El problema es que le pongo LEFT JOIN y no me muestra nadamas que los usuarios que han enviado invitaciones ...
Código MySQL:
Ver original
  1. SELECT usuarios.*,COUNT(tmp_invite.tmp_id) AS total FROM usuarios LEFT JOIN tmp_invite ON usuarios.id = tmp_invite.who_invites WHERE pais >= 0 GROUP BY tmp_invite.who_invites ORDER BY total DESC LIMIT 0,30
  #4 (permalink)  
Antiguo 15/09/2012, 07:13
 
Fecha de Ingreso: mayo-2009
Mensajes: 242
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: Problema con join con en tablas

Cita:
Iniciado por kriss8725 Ver Mensaje
El problema es que le pongo LEFT JOIN y no me muestra nadamas que los usuarios que han enviado invitaciones ...
Código MySQL:
Ver original
  1. SELECT usuarios.*,COUNT(tmp_invite.tmp_id) AS total FROM usuarios LEFT JOIN tmp_invite ON usuarios.id = tmp_invite.who_invites WHERE pais >= 0 GROUP BY tmp_invite.who_invites ORDER BY total DESC LIMIT 0,30


Perdon ya esta resuelto no me habia dado cuenta que tenia que agrupar por id de usuarios. :D
  #5 (permalink)  
Antiguo 15/09/2012, 07:16
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Problema con join con en tablas

A ver,
has probado la consulta tal y como te la propuse. Observo que has cambiado datos, por ej.,
GROUP BY tmp_invite.who_invites
en lugar de
GROUP BY usuarios.id

y además has añadido un where referido a un campo pais de no sé qué tabla.
Prueba con esto:
Código MySQL:
Ver original
  1.   usuarios.*,
  2.  IFNULL(COUNT(tmp_invite.tmp_id),'0') AS total
  3.   usuarios
  4.    tmp_invite
  5. ON usuarios.id = tmp_invite.who_invites
  6. GROUP BY usuarios.id

Etiquetas: join, select, tabla, tablas
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 14:15.