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

Cita:
Iniciado por jurena Ver Mensaje
Tu problema es que quieres agrupar por id_usuario no sé para qué, si dices que no vas a sumar los totales o algo parecido. Si agrupas por id_usuario por fuerza te mostrará sólo el primer registro de simulador de ese id_usuario, por lo que los otros registros de ese id_usuario no se mostrarán. No nos dices cómo deben salir los datos del ejemplo que pones, lo cual nos sería de ayuda,
empecemos de nuevo (no he probado la consulta):
Código MySQL:
Ver original
  1.   usu.id,
  2.   usu.nombre,
  3.   usu.apellidos,
  4.   sim.importe,
  5.   sim.referidos,
  6.   usu2.id,
  7.   usu2.nombre nombresponsor,
  8.   usu2.apellidos apellidossponsor
  9. FROM simulador sim
  10.   INNER JOIN usuarios usu ON sim.id_usuario = usu.id
  11.   INNER JOIN usuarios usu2 ON sim.id_usuario = usu2.id_sponsor
  12.  ORDER BY sim.id_usuario

Esto te dará todos los resultados de simulador, es decir, los de aquellos usuarios que aparecen en simulador y cada vez que aparecen. No lo he probado, pero debería salir cada registro de simulador con sus datos. Dinos qué querrías agrupar. Piensa que no tienes ningún campo de identificación para esa tabla simulador.
Me explico
Tabla simulador

______________________________
|id_usuario|importe|referidos|cual|
----------------------
|.........1..|...500...|.....2.....|......|
-----------------------
|.........2..|..1000...|.....4.....|......|
como puede ocurrir que un id_usuario aparezca varias veces
|.........1..|...1000...|....4.....|......|
No es posible distinguir este registro del primero si agrupamos por id_usuario, y tampoco por el sponsor que siempre será el mismo.
Dinos qué quieres que salga con los datos que pones en el post donde ofreces datos...
Muchas gracias de nuevo por tu ayuda jurena y perdona por el tiempo que te estoy haciendo perder...

El problema de base es que no termino de entender cómo funcionan las consultas, es decir, para una consulta simple no tengo problema, pero cuando debe ser así, a varias tablas y empezamos con el tema de INNER JOIN y demás, me pierdo, o sea, no sé para qué sirve el GROUP BY exactamente, por ejemplo y por más que reviso el manual, el libro y toda la documentación que encuentro, no consigo entenderlo.

El id_usuario de simulador es una copia del id de usuarios que es único y autoincrementable, por lo tanto, no se va a repetir, como decía, lo que necesito es sacar los datos que ponía en la consulta, teniendo en cuenta que debo separar los campos importe y referidos en dos partes, en una serán los correspondientes al usuario y en la otra los correspondientes a su sponsor.

Lo que no necesito son el nombre y apellidos del sponsor, puesto que, al mostrar los resultados solo debo mostrar el id, nombre, apellidos y código del usuario pero con importe y referidos que le corresponden a ese usuario como sponsor por un lado y como usuario por otro lado.

Sí es posible y de hecho debe ser, que el sponsor aparezca varias veces, o sea, el usuario solo puede tener un sponsor pero un sponsor puede (y debe) tener varios usuarios (referidos).

Espero que con esto me deje ayudar y muchas gracias de nuevo.

.