Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

No me da el valor maximo

Estas en el tema de No me da el valor maximo en el foro de Mysql en Foros del Web. amigos... estoy haciendo una consulta para obtener el valor máximo, pero como resultado obtengo otro que no es ... mi tabla es: id_pro / id_pre ...
  #1 (permalink)  
Antiguo 21/12/2009, 10:17
 
Fecha de Ingreso: julio-2009
Ubicación: .mysql_error ( XD )
Mensajes: 554
Antigüedad: 14 años, 9 meses
Puntos: 13
No me da el valor maximo

amigos... estoy haciendo una consulta para obtener el valor máximo, pero como resultado obtengo otro que no es ...

mi tabla es:

id_pro / id_pre / respuesta
2    /     1 / hola
2    /     2 / vaca
2    /     3 / feo
2    /   1 / hola
2    /   2 / vaca
2    /    3 / feo
2    /      1 / hola
2    /    2 / toro
2    /    3 / lindo
1    /      1 / hola


mi consulta es:

Código SQL:
Ver original
  1. SELECT id_pre, MAX(respuesta) FROM tb_respuesta ORDER BY id_pre

resulta que como resultado me da

1 / vaca

siendo que el id_pre 1 no tiene como respuesta vaca y vaca tampoco es el resultado que mas se repite

y necesito que me de:

1 / hola
2 / vaca
3 / feo

__________________
Mi Bosque de Sombras Solo Doom Metal!

por favor use esta etiqueta para publicar su código --->[HIGHLIGHT]

Última edición por Twonex; 21/12/2009 a las 14:14
  #2 (permalink)  
Antiguo 21/12/2009, 10:30
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: No me da el valor maximo

En el contexto de tu consulta, el ORDER BY es superfluo, ya que la misma debería devolver uno solo. Además, si usas un MAX() sonbre un campo, y el o los otros no tienen funciones agrupadas, deberás realizar algún agrupamiento o te dará error.
En toco caso yo lo haría:
Código MySQL:
Ver original
  1. SELECT id_pre, respuesta
  2. FROM tb_respuesta
  3. ORDER BY id_pre DESC
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 21/12/2009, 10:56
 
Fecha de Ingreso: julio-2009
Ubicación: .mysql_error ( XD )
Mensajes: 554
Antigüedad: 14 años, 9 meses
Puntos: 13
Respuesta: No me da el valor maximo

muchas gracias, asi si funko
pero porque usar un limit y no el max?


por otro lado tengo otra duda
quiero que ahora me muestre la cantidad de veces que esta repetido ese resultado

es decir (continuo con le ejemplo anterior) el resultado seria

1 / hola / 4


lo hago asi y para variar tampoco me funciona :P

Código SQL:
Ver original
  1. SELECT id_pre, respuesta, COUNT(respuesta) AS Cantidad FROM tb_respuesta ORDER BY id_prea ASC LIMIT 1

donde me muestra el resultado total de respuesta y no el de la respuesta máxima (hola)
__________________
Mi Bosque de Sombras Solo Doom Metal!

por favor use esta etiqueta para publicar su código --->[HIGHLIGHT]
  #4 (permalink)  
Antiguo 21/12/2009, 11:25
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: No me da el valor maximo

Cita:
pero porque usar un limit y no el max?
Por lo mismo que te dije: Una función agregada como MAX, junto a otro campo, necesita la cláusula GROUP BY o de lo contrario da INFORMACIÓN errÓNEA, y con GROUP BY no te hubiese devuelto un registro, sino varios.
Usar el ORDER BY seguido de LIMIT era la opción más simple, si lo que querías era el mayor a...

Cita:
donde me muestra el resultado total de respuesta y no el de la respuesta máxima (hola)
Código MySQL:
Ver original
  1. SELECT id_pre, Cantidad
  2.     (SELECT id_pre, respuesta, count(*) Cantidad
  3.     FROM tb_respuesta
  4.     GROUP BY  id_pre) T1
  5. ORDER BY Cantidad DESC
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 21/12/2009, 11:50
 
Fecha de Ingreso: julio-2009
Ubicación: .mysql_error ( XD )
Mensajes: 554
Antigüedad: 14 años, 9 meses
Puntos: 13
Respuesta: No me da el valor maximo

orale... así po si
aunque no funciona como deberia ser...
de a poco estoy ensamblando esta consulta

ahora tengo esto

Código SQL:
Ver original
  1. SELECT id_proceso, id_pregunta, respuesta, cantidad FROM
  2. (SELECT id_proceso, id_pregunta, respuesta, COUNT(*) cantidad FROM tb_respuesta GROUP BY id_pregunta) T1
  3. WHERE id_proceso = 2 AND id_pregunta = 1
  4. ORDER BY cantidad DESC LIMIT 1

y me esta sumando todos los resultados sin contemplar el WHERE
es decir... me dice que hola esta 4 veces siendo que debería ser 3
qué está mal?

muchas gracias gnzsoloyo, te de mis puntetes de karma!!
__________________
Mi Bosque de Sombras Solo Doom Metal!

por favor use esta etiqueta para publicar su código --->[HIGHLIGHT]

Última edición por Twonex; 21/12/2009 a las 13:49
  #6 (permalink)  
Antiguo 21/12/2009, 15:15
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: No me da el valor maximo

Creo que la parte del where debes incluirla dentro de la subconsulta para obtener el resultado que quieres. Prueba y dinos.

Código SQL:
Ver original
  1. SELECT id_proceso, id_pregunta, respuesta, cantidad FROM
  2. (SELECT id_proceso, id_pregunta, respuesta, COUNT(*) cantidad FROM tb_respuesta WHERE id_proceso = 2 AND id_pregunta = 1 GROUP BY id_pregunta) T1
  3. ORDER BY cantidad DESC LIMIT 1
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:40.