Ver Mensaje Individual
  #6 (permalink)  
Antiguo 22/07/2012, 21:34
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: Ordenar y mostrar el mayor de los votos

Bueno, en primer lugar, estás copiando incompletamente lo que yo puse. No entiendo cómo es que no te diste cuenta, pero es esto:
1) Yo no puse
Código MySQL:
Ver original
  1. HAVING round(voto/t1.total*100)
sino
Código MySQL:
Ver original
  1. HAVING ROUND(voto/t1.total*100) = max(ROUND(voto/t1.total*100))

2) No existe algo ambiguo, sino que no reconoce una columna:
Cita:
ERROR 1054 (42S22): Unknown COLUMN 't1.total' IN 'having clause'
Lo que significa que lo que no está reconociendo es la tabla derivada que se genera en la subconsulta del FROM, y esto está causado por características del HAVING. Estos detalles tienes que buscalos en el manual de referencia, que es donde se explican.

Hay una tercera cosas a tener en cuenta: Si lo que quieres es que devuelva los registros existentes en caso de un empate, no puedes poner LIMIT. Eso es absurdo, porque esa clausula sólo dejará el primer registro.

Ahora bien, probemos esto, basado en el manual de referencia, y suponiendo que la tabla "presidentes" no contiene ninguna columna denominada "total" o "ganador":
Código MySQL:
Ver original
  1.     nombre,
  2.     apellido,
  3.     voto,
  4.     ROUND(voto/total*100) ganador
  5. FROM presidentes,
  6.     (SELECT SUM(voto) total FROM presidentes) t1
  7. GROUP BY nombre
  8. HAVING max(ROUND(voto/total*100)) = ganador
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)