Foros del Web » Programando para Internet » PHP »

Sumatorias con Limites

Estas en el tema de Sumatorias con Limites en el foro de PHP en Foros del Web. Tengo un problema tengo unos queries que sacan un solo resultado y es una sumatoria, cuando los limito no me sale el calculo que debe ...
  #1 (permalink)  
Antiguo 30/09/2010, 09:59
 
Fecha de Ingreso: agosto-2010
Ubicación: Mexico
Mensajes: 180
Antigüedad: 13 años, 8 meses
Puntos: 0
Sumatorias con Limites

Tengo un problema tengo unos queries que sacan un solo resultado y es una sumatoria, cuando los limito no me sale el calculo que debe de ser. No se si tenga que reacomodar o reformular el query. Ahi les dejo el codigo.

Código:
    $SueldoTotal       = "SELECT SUM(E.Sueldo) FROM empleados E ";   
    $BonoTaxiTotal     = "SELECT SUM(REE.pago_evento) FROM rel_eventos_empleados REE ";
    $PagoExtraTotal    = "SELECT SUM(PE.Cantidad) FROM pagos_extras PE ";
    $string       = $vNombre."_".$vAPPA."_".$vAPMA."_".$vSUELDO."_".$vEXTRAS."_".$vTAXI."_".$vBONO;
 
    $cadena       = explode("_",$string);

    $Nvals          = array_filter($cadena);
    $countNvals   = count($Nvals);
  
    //Siguiente codigo es el WHERE del Select de busqueda
    IF($countNvals>=1) 
    {//1
      $sql    .= " WHERE ";
      $rela   = "SELECT id_empleado FROM rel_eventos_empleados WHERE ";
      
      IF($Nvals[0])
      {//2
       $sql   .= "E.nombre LIKE '%$Nvals[0]%' ";
       IF($countNvals>1 AND $Nvals[0]!=$Nvals[max(array_keys($Nvals))])
        $sql  .= " AND "; 
      }//2
      
      IF($Nvals[1])
      {//3    	     
       $sql   .= "E.Apellido_Paterno LIKE '%$Nvals[1]%' ";
       IF($countNvals>1 AND $Nvals[1]!=$Nvals[max(array_keys($Nvals))])
         $sql .= " AND ";  
      }//3
      
      IF($Nvals[2])
      {//4       
       $sql   .= "E.Apellido_Materno LIKE '%$Nvals[2]%' ";
       IF($countNvals>1 AND $Nvals[2]!=$Nvals[max(array_keys($Nvals))])
         $sql .= " AND ";        
      }//4
      
      IF($Nvals[3])
      {//5
 
       $SueldoTotal    .= " WHERE E.sueldo = $Nvals[3]";
       $BonoTaxiTotal  .= ",  empleados E WHERE E.id_empleado = REE.id_empleado AND E.sueldo = $Nvals[3]";
       $PagoExtraTotal .= ",  empleados E WHERE E.id_empleado = PE.id_empleado AND E.sueldo = $Nvals[3]";
  
       $sql   .= "E.Sueldo = $Nvals[3] ";    
       IF($countNvals>1 AND $Nvals[3]!=$Nvals[max(array_keys($Nvals))])
         $sql .= " AND ";      
      }//5
      
      IF($Nvals[4])
      {//6
       $IdPagoExtra    = "SELECT id_empleado FROM pagos_extras WHERE cantidad = $Nvals[4]";    
       $resIdPagoExtra = mysql_query($IdPagoExtra);  
       $rowIdPagoExtra = mysql_fetch_row($resIdPagoExtra);
 
       $SueldoTotal    .= ",  pagos_extras PE WHERE PE.cantidad = $Nvals[4]";
       $BonoTaxiTotal  .= ",  pagos_extras PE WHERE PE.id_empleado = REE.id_empleado AND PE.cantidad = $Nvals[4]";
       $PagoExtraTotal .= "WHERE PE.cantidad = $Nvals[4]";
       
       $sql .= " E.id_empleado = $rowIdPagoExtra[0] ";
       
       if(!$resIdPagoExtra) 
       {//7
	    //echo @mysql_errno($result);
        die('Invalid query(1): ' . mysql_error());
       }//7        
      }//6
 
      IF($Nvals[5] OR $Nvals[6])
      {//8            
         IF(empty($Nvals[5]))
          $rela  .= " pago_evento = $Nvals[6] ";
         ELSEIF(empty($Nvals[6]))
           $rela  .= "pago_taxi = $Nvals[5] "; 
         ELSE
          $rela  .= "pago_taxi = $Nvals[5] AND pago_evento = $Nvals[6] "; 
         
         IF(!empty($Nvals[5]))
         {//9
          $SueldoTotal    .= ", rel_eventos_empleados REE WHERE E.id_empleado = REE.id_empleado AND REE.pago_taxi = $Nvals[5]";
          $BonoTaxiTotal  .= " WHERE REE.pago_taxi = $Nvals[5]";
          $PagoExtraTotal .= ", rel_eventos_empleados REE WHERE PE.id_empleado = REE.id_empleado AND REE.pago_taxi = $Nvals[5]";
         }//9
         
         IF(!empty($Nvals[6]))
         {//10
          $SueldoTotal    .= ", rel_eventos_empleados REE WHERE E.id_empleado = REE.id_empleado AND REE.pago_evento = $Nvals[6]";
          $BonoTaxiTotal  .= "WHERE REE.pago_evento = $Nvals[6]";
          $PagoExtraTotal .= ", rel_eventos_empleados REE WHERE E.id_empleado = REE.id_empleado AND REE.pago_evento = $Nvals[6]";
         }//10      
      }//8

      $i=0;
      $BonTax    = mysql_query($rela);
        
      while($rowBonTax = mysql_fetch_row($BonTax))
      {//11
         $sql .= "E.Id_empleado = $rowBonTax[0] ";
         $i++;
         if($i>0 and $i<mysql_num_rows($BonTax))
          $sql .= " OR "; 
      }//11
        
      IF($Nvals>0 AND $Nvals <$Nvals[max(array_keys($Nvals))])
        $sql .= " AND ";
  
    }//1//Termina WHERE del query principal de busqueda
    $result = mysql_query($sql);
 
    if(!$result) 
    {
      echo "LA BUSQUEDA QUE ESTAS REALIZANDO NO ES FACTIBLE ";
      $sql               = "SELECT E.id_empleado, E.Nombre, E.Apellido_Paterno, E.Apellido_Materno, E.Sueldo FROM  empleados E ";
      $result            =  mysql_query($sql);
      $SueldoTotal       = "SELECT SUM(E.Sueldo) FROM empleados E ";   
      $BonoTaxiTotal     = "SELECT SUM(REE.pago_evento) FROM  eventos_empleados REE ";
      $PagoExtraTotal    = "SELECT SUM(PE.Cantidad) FROM pagos_extras PE ";
    }
    
    $resPagoExtraTotal = mysql_query($PagoExtraTotal);
    $rowPagoExtraTotal = mysql_fetch_row($resPagoExtraTotal);
    $resBonoTaxiTotal  = mysql_query($BonoTaxiTotal);
    $rowBonoTaxiTotal  = mysql_fetch_row($resBonoTaxiTotal);
    $resSueldoTotal    = mysql_query($SueldoTotal);
    $rowSueldoTotal    = mysql_fetch_row($resSueldoTotal);
  #2 (permalink)  
Antiguo 01/10/2010, 23:40
Avatar de egepe  
Fecha de Ingreso: diciembre-2009
Mensajes: 310
Antigüedad: 14 años, 4 meses
Puntos: 7
Respuesta: Sumatorias con Limites

Exactamente que es lo que quieres porque tanto codigo y a esta hora de verdad que no carburo bien... trata de colocar solo lo que quieres verficar y si puedes pasar algunos datos de ejemplo mejor...
Saludos
  #3 (permalink)  
Antiguo 05/10/2010, 10:02
 
Fecha de Ingreso: agosto-2010
Ubicación: Mexico
Mensajes: 180
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Sumatorias con Limites

Ya esta resuelto gracias.

Etiquetas: limites
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:51.