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 originalSELECT telefono, camposegundos, CEIL( camposegundos /60 ) cuentaminutos , (
CEIL( camposegundos /60 ) *
CASE WHEN LEFT( telefono, 1 ) = '1'
THEN 0.16
WHEN LEFT( telefono, 1 ) = '0'
THEN 0.50
WHEN LEFT( telefono, 2 ) = '22'
THEN 0.05
WHEN LEFT( telefono, 1 ) = '8'
THEN 0.10
END
)totalpagar
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 originalSELECT telefono, camposegundos,
(CASE WHEN LEFT( telefono, 1 ) = '1'
THEN 0.16
WHEN LEFT( telefono, 1 ) = '0'
THEN 0.50
WHEN LEFT( telefono, 2 ) = '22'
THEN 0.05
WHEN LEFT( telefono, 1 ) = '8'
THEN 0.10
END) AS preciominuto, (
CEIL( camposegundos /60 ) *
CASE WHEN LEFT( telefono, 1 ) = '1'
THEN 0.16
WHEN LEFT( telefono, 1 ) = '0'
THEN 0.50
WHEN LEFT( telefono, 2 ) = '22'
THEN 0.05
WHEN LEFT( telefono, 1 ) = '8'
THEN 0.10
END
)totalpagar
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