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: 19 años
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