Buenos días gfg08:
La función Max pertenece a un grupo especial de funciones llamadas de agrupación (junto con min, count, sum, etc). Estas funciones generalmente deberán ir acompañadas de la cláusula GROUP BY. Me imagino que eses novat@ en estos temas, así es que te recomiendo que le des una revisada a cualquier libro o manual de SQL para que aprendas el uso de estas funciones.
Ahora bien, con respecto a tu problema este es ocasionado justamente por que no tienes la cláusula GROUP BY. trataré de explicar con un ejemplo para ver si queda más claro:
Supongamos que tienes los siguientes datos
Código:
Codigo|Modelo|Tipo|Velocidad
-----------------------------
1|HP|Tipo 1|10
2|HP|Tipo 2|20
3|Epson|Tipo 1|15
4|Epson|Tipo 2|18
5|ACME|Tipo 2|2
6|ACME|Tipo 3|14
si haces esto:
Código SQL:
Ver originalSELECT Modelo, MAX(Velocidad) AS velocidad FROM Impresoras
GROUP BY modelo
el resultado sería este
Código:
Modelo|Velocidad
------------------
2|HP|20
4|Epson|18
6|ACME|14
es decir, la impresora más rápida para cada una de los modelos que tienes. Ahora bien por lo que comentas tú necesitas la más rápida de todas, para esto entonces tienes que hacer una subconsulta que te obtenga primero cual es la velocidad máxima para filtrar los registros de tu tabla. puedes hacerlo así
Código SQL:
Ver originalSELECT modelo, velocidad FROM Impresoras
WHERE Velocidad = (SELECT MAX(velocidad) FROM Impresoras)
o utilizando un INNER JOIN
Código SQL:
Ver originalSELECT modelo, velocidad FROM Impresoras I
INNER JOIN
(
SELECT MAX(velocidad) AS max_velocidad FROM Impresoras
) T
ON T.max_velocidad = I.Velocidad
Saludos
Leo.