Ver Mensaje Individual
  #4 (permalink)  
Antiguo 17/04/2009, 15:13
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Calculo de costo de llamada MYSQL

ponnos 5 o seis ejemplos de número de teléfono, tarifa aplicable, tiempo de llamada y total a pagar, para que lo veamos claramente. Piensa que esta consulta, SELECT CEIL( camposduracion /60 ) tiempo
FROM `tabla` te dará el número de minutos que habrá que multiplicar por la tarifa según el comienzo del número telefónico (con CASE WHEN según los primeros dígitos del número telefónico) podrás hacerlo y sacar el total sin problemas. Prueba esto:
Código sql:
Ver original
  1. SELECT telefono, camposegundos, CEIL( camposegundos /60 ) cuentaminutos , (
  2. CEIL( camposegundos /60 ) *
  3. CASE WHEN LEFT( telefono, 1 ) = '1'
  4. THEN 0.16
  5. WHEN LEFT( telefono, 1 ) = '0'
  6. THEN 0.50
  7. WHEN LEFT( telefono, 2 ) = '22'
  8. THEN 0.05
  9. WHEN LEFT( telefono, 1 ) = '8'
  10. THEN 0.10
  11. END
  12. )totalpagar
  13. FROM `tabla`
No he puesto redondeo de decimales ni tampoco he contemplado la posibilidad de otro inicio de número de teléfono. Para mostrar el precio de cada minuto para el registro, puedes hacerlo así:
Código sql:
Ver original
  1. SELECT telefono, camposegundos,
  2. (CASE WHEN LEFT( telefono, 1 ) = '1'
  3. THEN 0.16
  4. WHEN LEFT( telefono, 1 ) = '0'
  5. THEN 0.50
  6. WHEN LEFT( telefono, 2 ) = '22'
  7. THEN 0.05
  8. WHEN LEFT( telefono, 1 ) = '8'
  9. THEN 0.10
  10. END) AS preciominuto, (
  11. CEIL( camposegundos /60 ) *
  12. CASE WHEN LEFT( telefono, 1 ) = '1'
  13. THEN 0.16
  14. WHEN LEFT( telefono, 1 ) = '0'
  15. THEN 0.50
  16. WHEN LEFT( telefono, 2 ) = '22'
  17. THEN 0.05
  18. WHEN LEFT( telefono, 1 ) = '8'
  19. THEN 0.10
  20. END
  21. )totalpagar
  22. FROM `tabla`

Hay otra opción, que es crear una tabla donde tengas dos campos, el de los precios y el inicio de los números para cada precio, y luego hagas un inner join de ese número de esa nueva tabla con el inicio de telefono de la tabla principal. Te evitarias todo ese case when...
Saludos

Última edición por jurena; 18/04/2009 a las 02:39