Usuarios
id |nombre |apellidos |codigo |id_sponsor
1|Pepe|Gómez|1001|1
2|Juan|López|1002|1
3|Jorque|Pérez|1003|1
4|Ángel|Aguirre|1004|2
5|Luis|Vázquez|1005|2
6|Juan|Sánchez|1006|2
7|Luis|Bernáldez|1007|2
Simulador
id_usuario |importe |referidos |cual
1|500|2|2
2|1000|4|4
3|25|1|6
4|82|8|8
la consulta que pruebo
Código MySQL:
Ver original
El resultado obtenido
1|Pepe|Gómez|1|1001|500|2|1525|7|2
2|Juan|López|1|1002|1000|4|82|8|4
3|Jorque|Pérez|1|1003|25|1|0|0|6
4|Ángel|Aguirre|2|1004|82|8|0|0|8
5|Luis|Vázquez|2|1005|0|0|0|0|NULL
6|Juan|Sánchez|2|1006|0|0|0|0|NULL
7|Luis|Bernáldez|2|1007|0|0|0|0|NULL
Aunque en estos datos falta el campo mostrar, lo he añadido después y no hay problema. No entiendo por qué buscas filtrando usu2.id > 0, pues se trata de un autoincrement y aunque no se trate de él no creo que guardes ningún valor 0 o negativo (sospecho que sí, pues me pareció ver un -1), y si lo haces no has explicado por qué y cómo relacionarlo. Bueno, como eso lo sabrás tú mejor, nos dirás algo al respecto.
Creo, como ves, que los datos salen bien o por lo menos lo parecen. Haz la prueba tú. Yo he quitado los filtros de la consulta, es decir, el WHERE, pero como los tenías no tendrían que dar ningún problema.
Respecto a que te ofrece los mismos datos sumando que sin sumar, en algún caso tiene que ocurrir así. Me explico: si sólo tienes un registro de un usuario con una cantidad, al mostrarlo da igual que uses importe que SUM(importe), si hay un solo importe de ese usuario, y siempre habrá uno solo como usuario; distinto es su importe como sponsor. Puede o no puede dar lo mismo usando sum o no, pero hay que usarlo, pues quieres la cantidad de ese sponsor. Naturalmente no podrás usar suma para todas esas cantidades de sponsor que te salen en el listado, pues el total será erróneo para eso. Parece que tú querías mostrar el importe de ese usuario como usuario (1 solo) y al lado su importe como sponsor(serán ninguno, uno o varios, que habrá que sumar).
No es que sea de locos (y todos aquí somos bastante cabezones, si por cabezón entiendes que probamos y probamos hasta encontrar la solución, analizando, cambiando, consultando, etc.), pero para resolver estas cuestiones debes dar los datos de manera completa y precisa, con todas las posibilidades que pueden darse, ejemplificando con datos concretos y ofreciendo las salidas que quieres. Y es mejor hacerlo con pocos datos con los que sea fácil comprobar los errores y problemas.
Respecto al array del que me hablas y la programación, aquí, en este foro, no podemos tratar estas cuestiones, y realmente, esta consulta debería darte el resultado, sin necesidad de usar luego ningún array para trabajar más con los datos. Cosa distinta es que se trate de un ejercicio concreto que te hayan pedido, y en ese caso nos falta información previa. Mira los datos y dinos si conviene volver a empezar de cero...