Hola jakuam:
Con el permiso de quimfv, el problema está en el ultimo de los if's, Si te hubieras tomado un poco de tiempo para investigar la sintaxis de esta función verías que necesita tres parámetros:
Cita: IF(expr1,expr2,expr3)
Si expr1 es TRUE (expr1 <> 0 and expr1 <> NULL) entonces IF() retorna expr2; de otro modo retorna expr3. IF() retorna un valor numérico o cadena de caracteres, en función del contexto en que se usa
.
El último de los if's sólo está recibiendo dos parámetros, checa este script:
Código MySQL:
Ver originalQuery OK, 0 rows affected (0.09 sec)
-> (5,1000), (6, 150), (7, 750);
Query OK, 7 rows affected (0.07 sec)
+------+--------+
| id | precio |
+------+--------+
| 1 | 50 |
| 2 | 110 |
| 3 | 75 |
| 4 | 250 |
| 5 | 1000 |
| 6 | 150 |
| 7 | 750 |
+------+--------+
-> IF(precio
< 100, "de $0 a $100", -> IF(precio
< 500, "de $100 a $500", -> IF(precio
< 1000, "de $500 a $1000","más $1000"))) AS rango
, -> IF(precio
< 100, "de $0 a $100", -> IF(precio
< 500, "de $100 a $500", -> IF(precio
< 1000, "de $500 a $1000","más $1000"))); +-----------------+----------+
+-----------------+----------+
| de $0 a $100 | 2 |
| de $100 a $500 | 3 |
| de $500 a $1000 | 1 |
| más $1000 | 1 |
+-----------------+----------+
Debes tener cuidado en la definición correcta de tus rangos y tus descripciones, ya que tal y como los estás colocando no son totalmente excluyentes. Por ejemplo para el caso del registro donde el precio represente uno de los extremos del intervalo ¿Dónde debería colocarse? en mi forma particular de ver las cosas tus rangos deberías manejarlos así:
Código:
de $0 a $99.99
de $100 a $499.99
de $500 a $999.99
de $1000 en adelante
De esta manera no "empalmas" precios dentro de las categorías, pero eso es cuestión de tu lógica de negocio.
Saludos
Leo.