Tema: Consulta sql
Ver Mensaje Individual
  #7 (permalink)  
Antiguo 05/11/2011, 20:06
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Consulta sql

Pareces tener múltiples problemas en el asunto, no sólo de SQL....
Cita:
Supongamos que en el caso de que la maxima categoria no sea A1 sino A94223 (Sólo por decir), pero en ese caso yo no sabría cual sería la máxima categoria ya que eso se va agregando solo por el usuario(solo por decir). En ese caso yo no sabría que poner en una consulta
Según eso, tienes un esquema de categorías mal definido, el cual no se puede usar para determinar categorías mayores o menores. Por decirlo fácilmente, una categoría de tipo "A2" resulta ser mayor que una "A123", lo cual no parece lógico porque el 2 es menor que el 123...
Normalmente eso se resuelve separando ese esquema en dos columnas, una alfabética y otra numérica, con lo que se puede obtener mayor precisión. Pero es una solución que no has considerado.

Cita:
Estoy comparando el codigo, que es; ejemplo: '00000001', con la descripcion que sería 'A1'..
Por eso que no se puede hacer la comparación ( 0000001='A1'). En todo caso cómo podría para hacer que me compare asi:
En realidad es un problema demasiado elemental: Lo que tienes que indicar es exactamente cuál es la tabla y el campo a comparar, para que no haya confusones. Es un problema de dejar que MySQL resuelva las igualdades, cuando tienes columnas de dos o más tablas con el mismo nombre: Eso requiere una sintaxis mucho más precisa.
Por otro lado, usar MAX() o MIN() con un campo alfanumérico, como ya dije, es un error porque resulta muy impreciso. Lo mejor es resolver el tema de una forma más precisa con INNER JOIN, como por ejemplo, podríamos probar:

Código MySQL:
Ver original
  1.     E.nombre,
  2.     C.descripción
  3.     empleados E
  4.     INNER JOIN tipo_empleados T ON E.cod_tipo_empleado = T.cod_tipo_empleado
  5.     INNER JOIN (SELECT MAX(cod_cat_empleado) cod_cat_empleado FROM categoria_empleados) C ON E.cod_cat_empleado = C.cod_cat_empleado
  6.     E.cod_car='00000001'

Estoy suponiendo el nombre de algunos campos, porque no nos diste la estructura exacta.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)