Foros del Web » Programando para Internet » PHP »

Consulta

Estas en el tema de Consulta en el foro de PHP en Foros del Web. Hola tengo una tabla llamadaa gratificacion con los siguientes campos id_gratificacion, comisiones, asignacion, bonificacion 1 , 100 , NULL , 80 2 ,50 ,30 ,NULL ...
  #1 (permalink)  
Antiguo 16/03/2012, 10:40
 
Fecha de Ingreso: enero-2012
Mensajes: 158
Antigüedad: 12 años, 3 meses
Puntos: 1
Mensaje Consulta

Hola tengo una tabla llamadaa gratificacion con los siguientes campos


id_gratificacion, comisiones, asignacion, bonificacion
1 , 100 , NULL , 80
2 ,50 ,30 ,NULL
3 ,50 ,30 ,NULL

y deberia dar como resultado


TOTAL : 200, NULL, NULL

hace la suma por columnas pero solo se seman los registros 3 o mayor a 3 , si es dos registros llenos nose suma.

como lo puedo hacer esto en php y mysql por favor es urgente
  #2 (permalink)  
Antiguo 16/03/2012, 10:43
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 13 años, 10 meses
Puntos: 55
Respuesta: Consulta

bueno primero no se entiende bien, segundo debes colocar el codigo que tienes hasta ahora para que haga lo que dices
__________________
<?php echo "No te metas a lo hondo del Mar si no sabes nadar, primero aprende a nadar" ?>
...Error en linea: 1 o.O
  #3 (permalink)  
Antiguo 16/03/2012, 10:45
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 13 años
Puntos: 76
Respuesta: Consulta

hola

pero quieres que te sume solo si tiene tres o mas registros a partir de una llave o algo asi, no te entiendo ...

explicate y muestra codigo..
  #4 (permalink)  
Antiguo 16/03/2012, 11:11
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 9 meses
Puntos: 194
Respuesta: Consulta

dejame adivinar... nop, no pude adivinar.
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #5 (permalink)  
Antiguo 16/03/2012, 11:38
 
Fecha de Ingreso: enero-2012
Mensajes: 158
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Consulta



Aca dejo un ejemplo
asi deberia salir pero no me sale :( ayudenme por favor
  #6 (permalink)  
Antiguo 16/03/2012, 11:55
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 13 años
Puntos: 76
Respuesta: Consulta

hola

algo asi:

Código PHP:
Ver original
  1. <?php
  2. $query = "SELECT * FROM gratificacion ";
  3. $resultSet = mysql_query($query,$conexion);
  4. // creas tres contadores que se incrementan sumando el campo en cada reccorido
  5. $suma_comi = 0;
  6. $suma_asig = 0;
  7. $suma_boni = 0;
  8.  
  9. while($regSet = mysql_fetch_object($resultSet)){
  10. $suma_comi += $regSet->comisiones;
  11. $suma_asig += $regSet->asignacion;
  12. $suma_boni += $regSet->bonificacion ;
  13. ?>
  14.  
  15. <table>
  16. <tr>
  17. <td>ID GRAT</td>
  18. <td>COMISION</td>
  19. <td>ASIGNACION</td>
  20. <td>BONIFICACION</td>
  21. </tr>
  22. <tr>
  23. <td><?php echo $regSet->id_gratificacion;  ?></td>
  24. <td><?php echo $regSet->comisiones;  ?></td>
  25. <td><?php echo $regSet->asignacion;  ?></td>
  26. <td><?php echo $regSet->bonificacion ;  ?></td>
  27. </tr>
  28. <!-- totales-->
  29. <tr>
  30. <td>TOTAL</td>
  31. <td><?php echo $suma_comi;  ?></td>
  32. <td><?php echo $suma_asig ;  ?></td>
  33. <td><?php echo $suma_boni ; ?></td>
  34. </tr>
  35.  
  36. </table>
  37. <?php
  38.  
  39. }
  40. ?>

pruebalo asi
  #7 (permalink)  
Antiguo 16/03/2012, 12:00
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 9 meses
Puntos: 194
Respuesta: Consulta

Cita:
Iniciado por informacionsys Ver Mensaje
hola

algo asi:

Código PHP:
Ver original
  1. <?php
  2. $query = "SELECT * FROM gratificacion ";
  3. $resultSet = mysql_query($query,$conexion);
  4. // creas tres contadores que se incrementan sumando el campo en cada reccorido
  5. $suma_comi = 0;
  6. $suma_asig = 0;
  7. $suma_boni = 0;
  8.  
  9. while($regSet = mysql_fetch_object($resultSet)){
  10. $suma_comi += $regSet->comisiones;
  11. $suma_asig += $regSet->asignacion;
  12. $suma_boni += $regSet->bonificacion ;
  13. ?>
  14.  
  15. <table>
  16. <tr>
  17. <td>ID GRAT</td>
  18. <td>COMISION</td>
  19. <td>ASIGNACION</td>
  20. <td>BONIFICACION</td>
  21. </tr>
  22. <tr>
  23. <td><?php echo $regSet->id_gratificacion;  ?></td>
  24. <td><?php echo $regSet->comisiones;  ?></td>
  25. <td><?php echo $regSet->asignacion;  ?></td>
  26. <td><?php echo $regSet->bonificacion ;  ?></td>
  27. </tr>
  28. <!-- totales-->
  29. <tr>
  30. <td>TOTAL</td>
  31. <td><?php echo $suma_comi;  ?></td>
  32. <td><?php echo $suma_asig ;  ?></td>
  33. <td><?php echo $suma_boni ; ?></td>
  34. </tr>
  35.  
  36. </table>
  37. <?php
  38.  
  39. }
  40. ?>

pruebalo asi
Pero esto no le resuelve el problema, que solo debe sumar campos con 2 o mas filas no nulas. No es tan fácil lo que esta preguntando, lee de nuevo el enunciado y te darás cuenta lo que te digo.
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #8 (permalink)  
Antiguo 16/03/2012, 12:04
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 9 meses
Puntos: 194
Respuesta: Consulta

Código PHP:
Ver original
  1. SELECT (select count(comisiones) from gratificacion) as comi,
  2. (select count(asignacion) from gratificacion) as asig,
  3. (select count(bonificacion) from gratificacion) as boni from dual

Y luego es cuestión de preguntar si cada uno de esos campos es o no mayor o igual a 2

Espero que se entienda
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #9 (permalink)  
Antiguo 16/03/2012, 13:08
Avatar de xxxivanxxx  
Fecha de Ingreso: julio-2010
Ubicación: /home
Mensajes: 114
Antigüedad: 13 años, 9 meses
Puntos: 21
Respuesta: Consulta

Esto te sirve para lo que quieres hacer

Código MySQL:
Ver original
  1. SELECT IF(count(comiciones)>2,SUM(comiciones),NULL) as comiciones, IF(count(asignaciones)>2,SUM(asignaciones),NULL) as asignaciones, IF(count(bonificaciones)>2,SUM(bonificaciones),NULL) as bonificaciones from gratificaciones

Saludos, si te sirvio dale +1
__________________
<?="Hello World"?> -> si te gustÓ dale +1
  #10 (permalink)  
Antiguo 16/03/2012, 13:09
 
Fecha de Ingreso: enero-2012
Mensajes: 158
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Consulta

Y como hago eso =?
  #11 (permalink)  
Antiguo 16/03/2012, 13:09
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 9 meses
Puntos: 194
Respuesta: Consulta

Cita:
Iniciado por xxxivanxxx Ver Mensaje
Esto te sirve para lo que quieres hacer

Código MySQL:
Ver original
  1. SELECT IF(count(comiciones)>2,SUM(comiciones),NULL) as comiciones, IF(count(asignaciones)>2,SUM(asignaciones),NULL) as asignaciones, IF(count(bonificaciones)>2,SUM(bonificaciones),NULL) as bonificaciones from gratificaciones

Saludos, si te sirvio dale +1
La solución esta buena la pensé también, pero no me gusta mucho incluir if en mysql a no ser que sea muy necesario.
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #12 (permalink)  
Antiguo 16/03/2012, 13:12
Avatar de xxxivanxxx  
Fecha de Ingreso: julio-2010
Ubicación: /home
Mensajes: 114
Antigüedad: 13 años, 9 meses
Puntos: 21
Respuesta: Consulta

Código PHP:
Ver original
  1. <?
  2. $query=mysql_query("SELECT IF(count(comiciones)>2,SUM(comiciones),NULL) as comiciones, IF(count(asignaciones)>2,SUM(asignaciones),NULL) as asignaciones, IF(count(bonificaciones)>2,SUM(bonificaciones),NULL) as bonificaciones from gratificaciones");
  3. echo "<table>";
  4. while($r=mysql_fetch_array($query)){
  5.    echo "<tr><td>TOTAL:</td><td>".$r['comiciones']."</td><td>".$r['asignaciones']."</td><td>".$r['bonificaciones']."</td></tr>";
  6. }
  7. echo "</table>";
  8. ?>

Saludos, si te sirvio dale +1
__________________
<?="Hello World"?> -> si te gustÓ dale +1
  #13 (permalink)  
Antiguo 16/03/2012, 13:41
 
Fecha de Ingreso: enero-2012
Mensajes: 158
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Consulta

aca me esta sumando por columnas todo pero no cumple con lo que estoy pidiendo ? :(
  #14 (permalink)  
Antiguo 16/03/2012, 13:42
 
Fecha de Ingreso: enero-2012
Mensajes: 158
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Consulta

creo q debe ser si es por campos poner si esta lleno por 3 registros sumar y si tiene 2 registros llenos no sumar ? alguien m,e puede ayudar
  #15 (permalink)  
Antiguo 16/03/2012, 13:58
Avatar de xxxivanxxx  
Fecha de Ingreso: julio-2010
Ubicación: /home
Mensajes: 114
Antigüedad: 13 años, 9 meses
Puntos: 21
Respuesta: Consulta

Cita:
creo q debe ser si es por campos poner si esta lleno por 3 registros sumar y si tiene 2 registros llenos no sumar ? alguien m,e puede ayudar
lo que te deje arriba funciona perfectamente:

Código PHP:
Ver original
  1. <?
  2.     $query=mysql_query("SELECT IF(count(comiciones)>2,SUM(comiciones),NULL) as comiciones, IF(count(asignaciones)>2,SUM(asignaciones),NULL) as asignaciones, IF(count(bonificaciones)>2,SUM(bonificaciones),NULL) as bonificaciones from gratificaciones");
  3.     echo "<table>";
  4.     while($r=mysql_fetch_array($query)){
  5.        echo "<tr><td>TOTAL:</td><td>".$r['comiciones']."</td><td>".$r['asignaciones']."</td><td>".$r['bonificaciones']."</td></tr>";
  6.     }
  7.     echo "</table>";
  8.     ?>

como resultado te dara:

TOTAL: 200 NULL 150

eso no es lo que deseas¿?¿?
__________________
<?="Hello World"?> -> si te gustÓ dale +1
  #16 (permalink)  
Antiguo 16/03/2012, 14:57
 
Fecha de Ingreso: enero-2012
Mensajes: 158
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Consulta

me sale error
  #17 (permalink)  
Antiguo 16/03/2012, 14:59
 
Fecha de Ingreso: enero-2012
Mensajes: 158
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Consulta

<?

$query=mysql_query("SELECT gratificacion.id_gratificacion, IF(count(gratificacion.comisiones)>2,SUM(gratifica cion.comisiones),NULL) as comisiones, IF(count(gratificacion.asignaciones)>2,SUM(gratifi cacion.asignaciones),NULL) as asignaciones, IF(count(gratificacion.bonificaciones)>2,SUM(grati ficacion.bonificaciones),NULL) as bonificaciones, trabajador.id_trabajador, trabajador.apellidos, trabajador.nombres, mes.id_mes, mes.nombre, ano.id_ano, ano.nombre
FROM gratificacion INNER JOIN trabajador ON trabajador.id_trabajador = gratificacion.id_trabajador INNER JOIN mes ON mes.id_mes = gratificacion.id_mes INNER JOIN ano ON ano.id_ano = gratificacion.id_ano ");

echo "<table>";
while($r=mysql_fetch_array($query)){
echo "<tr><td>TOTAL:</td><td>".$r['comisiones']."</td><td>".$r['asignaciones']."</td><td>".$r['bonificaciones']."</td></tr>";
}
echo "</table>";
?>
  #18 (permalink)  
Antiguo 16/03/2012, 15:00
 
Fecha de Ingreso: enero-2012
Mensajes: 158
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Consulta

este es el error q me sale que estare haciendo mal Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result
  #19 (permalink)  
Antiguo 16/03/2012, 15:07
Avatar de xxxivanxxx  
Fecha de Ingreso: julio-2010
Ubicación: /home
Mensajes: 114
Antigüedad: 13 años, 9 meses
Puntos: 21
Respuesta: Consulta

estas seguro que esto es asi:

Código MySQL:
Ver original
  1. SUM(gratifi cacion.asignaciones)

va separado¿?¿? , yo he probado la consulta y si funciona correctamente :)

primero prueba que te funciones la consulta sola, sin los JOINS.
__________________
<?="Hello World"?> -> si te gustÓ dale +1
  #20 (permalink)  
Antiguo 16/03/2012, 15:16
 
Fecha de Ingreso: enero-2012
Mensajes: 158
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Consulta

sin los join me funciona bien pero con los join no ejecuta sale error
  #21 (permalink)  
Antiguo 16/03/2012, 16:58
 
Fecha de Ingreso: enero-2012
Mensajes: 158
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Consulta

HOLA AMIGOS MUY BUEN APORTE MUCHAS GRACIAS POR RESPNDER A LA BREVEDAD PERO
ESTE CODIGO
"SELECT gratificacion.id_gratificacion, IF( count( gratificacion.comisiones ) >2, SUM( gratificacion.comisiones ) , NULL ) AS comisiones, IF( count( gratificacion.asignaciones ) >2, SUM( gratificacion.asignaciones ) , NULL ) AS asignaciones, IF( count( gratificacion.bonificaciones ) >2, SUM( gratificacion.bonificaciones ) , NULL ) AS bonificaciones, trabajador.id_trabajador, trabajador.apellidos, trabajador.nombres, mes.id_mes, mes.nombre, ano.id_ano, ano.nombre
FROM gratificacion INNER JOIN trabajador ON trabajador.id_trabajador = gratificacion.id_trabajador
INNER JOIN mes ON mes.id_mes = gratificacion.id_mes
INNER JOIN ano ON ano.id_ano = gratificacion.id_ano WHERE ano.id_ano='$id_ano' AND trabajador.id_trabajador='$id_trabajador' GROUP BY gratificacion.id_trabajador"



ME SUMA TOTAL NO ME PONE LAS REGLAS QUE PIDO PORFAVOR AYUDENME
  #22 (permalink)  
Antiguo 19/03/2012, 15:45
 
Fecha de Ingreso: enero-2012
Mensajes: 158
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Consulta

amigos ayudenme de verdad por favor es urgente

Etiquetas: mysql, registro, tabla
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 17:42.