Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/12/2012, 15:13
rbczgz
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Consulta múltiple con INNER JOIN

Hola a tod@s,

Aquí estoy como de costumbre, con mis sistemas de afiliados que no me dejan dormir.

Lo que pretendo ahora es hacer un simulador, para ello he creado una tabla específica con la siguiente estructura:

Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `simulador` (
  2.   `id_usuario` int(7) NOT NULL,
  3.   `importe` decimal(20,2) NOT NULL default '0.00',
  4.   `referidos` int(7) NOT NULL default '0',
  5.   `cual` int(7) NOT NULL default '0',
  6.   PRIMARY KEY  (`id_usuario`)
  7. ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci;

Entonces, teniendo otra tabla con los datos completos de los usuarios, que no voy a colocar aquí por no ocupar sitio innecesariamente, pretendo hacer la siguiente consulta:

Código MySQL:
Ver original
  1. SELECT  usu.id,
  2.         usu.nombre,
  3.         usu.apellidos,
  4.         usu.id_sponsor,
  5.         sp.id_usuario AS sim_sp,
  6.         usu.codigo,
  7.         sim.id_usuario,
  8.         sim.importe,
  9.         sp.importe AS sp_importe,
  10.         sim.referidos,
  11.         sp.referidos AS sp_referidos
  12. FROM usuarios AS usu
  13. INNER JOIN simulador AS sim ON (usu.id = sim.id_usuario)
  14. INNER JOIN simulador AS sp ON (sp.id_usuario = usu.id_sponsor)
  15. GROUP BY usu.id
  16. ORDER BY usu.id ASC";

Lo que pretendo es obtener, después de procesar el resultado, obtener en una variable el importe del sponsor (sp_importe) y los referidos del sponsor (sp_referidos), teniendo que realizar posteriormente actualizaciones en función de los datos de estos dos campos.

El sponsor lo debemos obtener de la tabla usuarios mediante el id_sponsor del usuario que estamos procesando (id en la tabla usuarios que es el mismo que id_usuario en la tabla simulador) y, este id_sponsor, debe ser el correspondiente al de la tabla simulador.

Entonces, por un lado, debemos tener los datos referidos e importe (del usuario) y por otro los datos sp_referidos y sp_importe (del usuario), pero ambos pares de datos corresponden a la misma tabla (simulador) y se relacionan por medio de la tabla usuarios.

La pregunta es ¿en esta consulta obtengo los datos correctos en los campos pretendidos?

¿Cómo debería procesar estos resultados para asignar cada dato en una variable que posteriormente pueda usar para las actualizaciones (UPDATE)?

Muchas gracias por la ayuda que me podáis brindar.

.