Ver Mensaje Individual
  #5 (permalink)  
Antiguo 12/03/2010, 17:19
Avatar de cemansilla
cemansilla
 
Fecha de Ingreso: septiembre-2007
Ubicación: Buenos Aires, Argentina, Argentina
Mensajes: 214
Antigüedad: 16 años, 7 meses
Puntos: 6
Respuesta: Ayuda con Optimización de consultas

Encontré este articulo: http://dev.mysql.com/tech-resources/...ical-data.html

Y basado en el generé la consulta de la siguiente manera:

Código PHP:
function getRedReferidos($id_usuario){
         
         
$db = new db();
         
         
$query_join "";
         
         
$query "SELECT ";         
         
         for(
$c 2$c <= NIVELES$c++){
             
             
$coma = ($c != NIVELES) ? "," "";
             
             
$query .= ($c 1) . " AS nivel, t" $c ".id, t" $c ".nombre, t" $c ".apellido, t" $c ".estado, t" $c ".patrocinador, t" $c ".email" $coma;
        
             
$query_join .= " LEFT JOIN `usuarios` AS t" $c " ON t" $c ".patrocinador = t" . ($c 1) . ".id ";
             
         }
         
         
$query .= " FROM `usuarios` AS t1 ";
         
         
$query .= $query_join;

        
$query .= " WHERE t1.id = '" $id_usuario "';";
         
         echo 
$query;
         
     } 
Lo que me genera esta consulta (con datos ficticios):

Código:
SELECT 1 AS nivel, t2.id, t2.nombre, t2.apellido, t2.estado, t2.patrocinador, t2.email, 2 AS nivel, t3.id, t3.nombre, t3.apellido, t3.estado, t3.patrocinador, t3.email FROM `usuarios` AS t1 LEFT JOIN `usuarios` AS t2 ON t2.patrocinador = t1.id LEFT JOIN `usuarios` AS t3 ON t3.patrocinador = t2.id WHERE t1.id = '1';
Y este es el resultado:



Con estos datos en la tabla de usuarios:



Y esta perfecto el tema es que estoy trayendo datos de mas por cada registro, o al menos podria cambiar un poco la generacion d ela consulta para organizar todo un poco mas.

EDITO y AGREGO: lo que necesitaria es 1 registro por cada usuario y que indique el nivel al que pertenece
__________________
CÉSAR MANSILLA
Web & Mobile Developer - Analista - Creativo - Curioso
http://cesarmansilla.com/
http://cesarmansilla.com/blog/

Última edición por cemansilla; 12/03/2010 a las 17:29