Ver Mensaje Individual
  #19 (permalink)  
Antiguo 05/01/2013, 08:57
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Consulta múltiple con INNER JOIN

Este no es un foro de programación, no lo olvides. Yo voy a proporcionarte una propuesta mediante SQL, es decir, una consulta a la base de datos. Pruébala y verás lo que ocurre:

Código MySQL:
Ver original
  1.    usu2.nombre,
  2.    usu2.apellidos,
  3.    usu2.id IDUSUARIO,
  4.    IFNULL(SUM(t1.impusu),0) ImporteUsuario,
  5.    IFNULL(SUM(t1.refusu),0) RequeridoUsuario,
  6.    IFNULL(SUM(t1.impsp),0) ImporteSponsor,
  7.    IFNULL(SUM(t1.refsp),0) UsuarioSponsor
  8. FROM usuarios usu2 LEFT JOIN ((
  9. SELECT usu.id idusuario, IFNULL( SUM( sim.importe ) , 0 ) impusu, IFNULL( SUM( sim.referidos ) , 0 ) refusu, '0'impsp, '0'refsp
  10. FROM simulador sim
  11. INNER JOIN usuarios usu ON sim.id_usuario = usu.id
  12. GROUP BY sim.id_usuario
  13. ORDER BY sim.id_usuario
  14. )
  15.  
  16. SELECT usu.id_sponsor, '0', '0', SUM( sim.importe ) , SUM( sim.referidos )
  17. FROM simulador sim
  18. INNER JOIN usuarios usu ON sim.id_usuario = usu.id
  19. GROUP BY usu.id_sponsor
  20. ORDER BY usu.id_sponsor
  21. ))t1 ON usu2.id = t1.idusuario GROUP BY usu2.id ORDER BY usu2.id

con programación tal vez harías por separado las dos consultas y luego al recorrer una comparar con los datos de la otra y pasarlos, o cargar en un array y luego al hacer la segunda carga..., pero eso debes preguntarlo en el foro de programación.
Una breve explicación sobre la consulta. Se trata de dos consultas para traer lo obtenido por un usuario como usuario y como sponsor. Uno mediante UNION ALL desplazando a distinto campo(alias) los datos como usuario y como sponsor. Luego hago una subconsulta con esos datos y los de todos los usuarios (necesario el uso de LEFT),con la que me traigo los nombres, apellidos e id, luego controlo los nulos para las sumas con IFNULL, agrupo por el id (en una consulta el usuario y en la otra el sponsor) y muestro los datos...

Última edición por jurena; 05/01/2013 a las 09:04