Hola de nuevo Bhrentox:
Insisto en que te estás complicando de más la consulta... si lo que necesitas es obtener los de la tabla de un valor isr para un valor determinado ni siquiera hay necesidad de hacer un CASE-WHEN... sería así.
Supongamos que tu tabla isr la tienes así:
Código MySQL:
Ver original+------+----------------+----------------+-----------+-----------+
| id | limiteinferior | limitesuperior | cuotafija | porciento |
+------+----------------+----------------+-----------+-----------+
| 1 | 0.01 | 244.80 | 0.00 | 0.02 |
| 2 | 244.81 | 2077.50 | 4.65 | 0.06 |
| 3 | 2077.51 | 3651.00 | 121.95 | 0.11 |
| 4 | 3651.01 | 4244.10 | 293.25 | 0.16 |
| 5 | 4244.11 | 5081.40 | 388.05 | 0.18 |
| 6 | 5081.41 | 10248.45 | 538.20 | 0.21 |
| 7 | 10248.46 | 16153.05 | 1641.75 | 0.24 |
| 8 | 16153.06 | NULL | 3030.60 | 0.30 | +------+----------------+----------------+-----------+-----------+
Puedes hacer directamente la consulta poniendo el valor, sin el case, sólo con una condición WHERE:
Código MySQL:
Ver original -> (20000 >= limiteinferior
AND limitesuperior
IS NULL); +------+----------------+----------------+-----------+-----------+
| id | limiteinferior | limitesuperior | cuotafija | porciento |
+------+----------------+----------------+-----------+-----------+
| 8 | 16153.06 | NULL | 3030.60 | 0.30 | +------+----------------+----------------+-----------+-----------+
O podrías utilizar una variable, es exactamente lo mismo. estos casos coinciden con límites inferior y superir
Si quieres obtener los valores de la tabla para 5081.40, lo único que tienes que hacer es algo como esto:
Código MySQL:
Ver originalmysql
> SET @valor
= 5081.40;Query OK, 0 rows affected (0.00 sec)
-> (@valor
>= limiteinferior
AND limitesuperior
IS NULL); +------+----------------+----------------+-----------+-----------+
| id | limiteinferior | limitesuperior | cuotafija | porciento |
+------+----------------+----------------+-----------+-----------+
| 5 | 4244.11 | 5081.40 | 388.05 | 0.18 |
+------+----------------+----------------+-----------+-----------+
mysql
> SET @valor
= 5081.41;Query OK, 0 rows affected (0.00 sec)
-> (@valor
>= limiteinferior
AND limitesuperior
IS NULL); +------+----------------+----------------+-----------+-----------+
| id | limiteinferior | limitesuperior | cuotafija | porciento |
+------+----------------+----------------+-----------+-----------+
| 6 | 5081.41 | 10248.45 | 538.20 | 0.21 |
+------+----------------+----------------+-----------+-----------+
Dale un vistazo para ver si te sirve...
Saludos
Leo.