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

Consulta maximo y minimo

Estas en el tema de Consulta maximo y minimo en el foro de Mysql en Foros del Web. Hola a tod@as. Tengo un problema y es que tengo una tabla de nombre partidos con los siguientes campos id_partido id_campo (es el id numerico ...
  #1 (permalink)  
Antiguo 13/03/2009, 07:03
Avatar de Torus  
Fecha de Ingreso: enero-2002
Ubicación: Tú buscame y me encontraras
Mensajes: 413
Antigüedad: 22 años, 4 meses
Puntos: 0
Consulta maximo y minimo

Hola a tod@as.
Tengo un problema y es que tengo una tabla de nombre partidos con los siguientes campos

id_partido
id_campo (es el id numerico que equivale al nombre del campo que está en otra tabla)
puntos_equipo
puntos_rivales

Sacar el numero total de partidos, ganados, perdidos y empatados no tengo problema.
Pero quisiera poder sacar los siguientes datos:
el id_campo donde mas se jugó
el id_campo donde menos se jugo
Gracias de antemano
Un saludo
__________________
Hay tanto que aprender y tan poco tiempo
  #2 (permalink)  
Antiguo 13/03/2009, 08:58
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Consulta maximo y minimo

Para el máximo:
select id_campo, count(id_campo)dato from partidos group by id_campo having dato = (SELECT count(id_campo) dato2 from partidos group by id_campo order by count(id_campo)desc limit 1)

Para el mínimo:

select id_campo, count(id_campo)dato from partidos group by id_campo having dato = (SELECT count(id_campo) dato2 from partidos group by id_campo order by count(id_campo)asc limit 1)
  #3 (permalink)  
Antiguo 13/03/2009, 12:54
Avatar de Torus  
Fecha de Ingreso: enero-2002
Ubicación: Tú buscame y me encontraras
Mensajes: 413
Antigüedad: 22 años, 4 meses
Puntos: 0
Respuesta: Consulta maximo y minimo

Jurena Gracias por tu respuesta, pero (culpa mia) no indique que es una consulta para PHP y me da el siguiente error
Cita:
Invalid use of group function
No se si el error me lo da por la construccion o por otro motivo yo he cortado y pegado.
De nuevo Gracias
Un cordial Saludo
__________________
Hay tanto que aprender y tan poco tiempo
  #4 (permalink)  
Antiguo 14/03/2009, 01:23
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Consulta maximo y minimo

Torus,
No es culpa tuya, pues debería funcionar también en PHP. Lo he probado y va bien con PHP. Quizás el problema es la versión de MySQL que usas y la imposibilidad de usar subconsultas en ella. De todas formas, prueba la consulta tal cual la tienes ahora en el SQL de PHPMyAdmin y si allí te da problemas, deberías decirnos cuáles son, y especificarnos la versión de MySQL que usas. Intentaremos buscar otra solución.
  #5 (permalink)  
Antiguo 14/03/2009, 01:42
Avatar de Torus  
Fecha de Ingreso: enero-2002
Ubicación: Tú buscame y me encontraras
Mensajes: 413
Antigüedad: 22 años, 4 meses
Puntos: 0
Respuesta: Consulta maximo y minimo

Hola Jurena, lo he intentado en la ventana de consulta SQL del phpmyadmin y me da el mismo error.
La version que estoy utilizando es la versión 4.0.15a
Gracias por tu interes
Un Cordial Saludo
__________________
Hay tanto que aprender y tan poco tiempo
  #6 (permalink)  
Antiguo 14/03/2009, 01:52
Avatar de Torus  
Fecha de Ingreso: enero-2002
Ubicación: Tú buscame y me encontraras
Mensajes: 413
Antigüedad: 22 años, 4 meses
Puntos: 0
Respuesta: Consulta maximo y minimo

En esta direccion pongo la captura del error del phpmyadmin
http://domianweb.com/error/error.jpg
__________________
Hay tanto que aprender y tan poco tiempo
  #7 (permalink)  
Antiguo 14/03/2009, 02:17
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Consulta maximo y minimo

Es la versión de MySQL, que no acepta subconsultas. Imagino que se trata del MySQL de tu servidor y tú no tienes la posibilidad de actualizar a una versión más reciente, preferiblemente posterior a 4.1, para poder hacer las subconsultas. Si pudieras actualizarla, creo que sería lo mejor, aunque deberías controlar el proceso. No obstante, intentaremos ver cómo hacerlo sin subconsultas. Creo que Quimfv mostró una solución en este foro a ese problema; sería el del MAX(count , y él lo hizo sin subconsultas.
De todas formas, yo creo que deberías plantearte una actualización de MySQL. Si todo es en localhost, tendrías la posibilidad de hacerlo tú mismo y no depender de la gente del servidor.
  #8 (permalink)  
Antiguo 14/03/2009, 05:15
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Consulta maximo y minimo

Torus,

si decides quedarte con la versión actual, puedes algo de PHP para hacer lo mismo; te costará 4 consultas, pero lo hará igual. El método es usar dos consultas para cada resultado: en la primera obtienes el máximo o el mínimo; luego guardas ese valor en una variable y haces la segunda consulta con ese valor donde pongo $maximo o $minimo.

Para sacar los campos en que más se jugó:

1) SELECT count(id_campo) maximo FROM `partidos` group by id_campo order by maximo desc limit 1
2) select id_campo, count(id_campo) dato1 from partidos group by id_campo having dato1 = $maximo

Para sacar los campos en los que se jugó menos:
1) SELECT count(id_campo) minimo FROM `partidos` group by id_campo order by minimo asc limit 1
2) select id_campo, count(id_campo) dato2 from partidos group by id_campo having dato2 = $minimo

Creo que funcionará.

Última edición por jurena; 14/03/2009 a las 05:40
  #9 (permalink)  
Antiguo 14/03/2009, 10:05
Avatar de Torus  
Fecha de Ingreso: enero-2002
Ubicación: Tú buscame y me encontraras
Mensajes: 413
Antigüedad: 22 años, 4 meses
Puntos: 0
Respuesta: Consulta maximo y minimo

Hola jurena, creo que lo he resuelto, he realizado alguna prueba y me sale

Para el minimo
SELECT id_campo, count(id_campo) as dato from partidos group by id_campo order by dato asc

Para el maximo
SELECT id_campo, count(id_campo) as dato from partidos group by id_campo order by dato desc

Creo que esta bien ¿no? esto del sql no es lo mio

Gracias
Un Saludo
__________________
Hay tanto que aprender y tan poco tiempo
  #10 (permalink)  
Antiguo 14/03/2009, 10:12
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Consulta maximo y minimo

Imagino que añadirás un limit a cada uno, porque si no es así te sacará toda la lista, eso sí ordenada como quieres, pero es una lista completa. Si añades limit 1, eso estaría bien si nunca hubiera más de un campo que tuviera el mínimo o el máximo. Imagina que en los campos con id_campo 1 y 5 se han jugado 20 partidos, y ese fuera el máximo; tu consulta sólo te sacaría el id_campo 1. Y lo mismo haría si hubiera más de dos: sólo sacaría uno. Lo mismo te digo para el mínimo. De ahí la razón de hacer esas dos consultas que te propuse para cada uno.

Saludos
  #11 (permalink)  
Antiguo 14/03/2009, 10:41
Avatar de Torus  
Fecha de Ingreso: enero-2002
Ubicación: Tú buscame y me encontraras
Mensajes: 413
Antigüedad: 22 años, 4 meses
Puntos: 0
Respuesta: Consulta maximo y minimo

En el caso que me dices es cierto, lo que pasa es que realizo un while para que me limite los resultados en caso de ser iguales a los dos o mas datos maximos ( o minimo segun caso )iguales.
Si hemos ganado 5 veces en un campo y otras 5 en otro me saca los dos siempre y cuando sea el maximo ( o minimo segun caso ).
Un Saludo
__________________
Hay tanto que aprender y tan poco tiempo
  #12 (permalink)  
Antiguo 14/03/2009, 12:21
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Consulta maximo y minimo

Eso funciona, claro, y pensé aconsejarte esa opción, pero se trata de una solución con un uso más activo de PHP. En realidad, yo no sabría decirte qué es mejor, probablemente lo que tú haces, dos consultas, una carga de todos los datos, y luego recortas en la iteración, aunque, como te digo, un cambio en la versión de MySQL te permitirá hacer subconsultas.
Saludos.

Última edición por jurena; 14/03/2009 a las 16:21
  #13 (permalink)  
Antiguo 14/03/2009, 13:52
Avatar de Torus  
Fecha de Ingreso: enero-2002
Ubicación: Tú buscame y me encontraras
Mensajes: 413
Antigüedad: 22 años, 4 meses
Puntos: 0
Respuesta: Consulta maximo y minimo

Lo de cambiar la version, en local lo tengo facil pero en el server es mas complicado.
Lo que no puedo entender es ¿como una version mas actual no contempla la posibilidad de realizar subconsultas?
Parece un paso atras ¿no?
__________________
Hay tanto que aprender y tan poco tiempo
  #14 (permalink)  
Antiguo 14/03/2009, 16:20
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Consulta maximo y minimo

No, Torus, la versión que usas es la 4.0 y la que permite subconsultas es 4.1 y las posteriores. No vendría mal que la actualizaran en el servidor, la verdad. Te evitarías mucho trabajo con PHP.
  #15 (permalink)  
Antiguo 15/03/2009, 05:10
Avatar de Torus  
Fecha de Ingreso: enero-2002
Ubicación: Tú buscame y me encontraras
Mensajes: 413
Antigüedad: 22 años, 4 meses
Puntos: 0
Respuesta: Consulta maximo y minimo

Muchas Gracias por tus aclaraciones, y para no molestarte mas te pediria un nuevo favor.
¿sabes donde puedo ver ejemplos de consultas? sobre todo para estadisticas ya sabes el maximo de puntos el minimo el campo donde se ha perdido mas etc.
De nuevo te reitero mi gratitud.
Un Cordial Saludo
__________________
Hay tanto que aprender y tan poco tiempo
  #16 (permalink)  
Antiguo 15/03/2009, 06:26
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Consulta maximo y minimo

Torus,

Lo primero que debes aprender es SQL, que es el lenguaje de consultas. MySQL lo usa, aunque con algunos cambios. Yo te recomiendo que veas estas páginas, aunque hay muchísimas más:
http://www.aulaclic.es/sql/f_sql.htm

http://www.w3schools.com/sql/default.asp

http://www.mysql-hispano.org/page.php?id=14

Por supuesto, para las funciones y demás de MySQL, el manual oficial y MySQL con clase:


http://dev.mysql.com/doc/refman/5.0/es/index.html

http://mysql.conclase.net/curso/index.php

Debes aprender a realizar las búsquedas (group by..., funciones como AVG, MAX, MIN, etc., y un uso adecuado de los cruces inner join, left join, etc.), pero cuando sepas lo básico, aplicarlo a tus bases dependerá de la estructura de las mismas; por eso conviene dar un repaso a la normalización de bases, para no tener que corregir la estructura. Es decir, la estructura dependerá en alguna medida de los resultados que quieras obtener. Si tu estructura no es la correcta, tendrás grandes dificultades para obtener lo que quieres.

Como consejo final, echa un vistazo al foro, tanto en bases de datos como MySQL, y también en los foros de Oracle, SQL, PostgreSQL, porque todas son bases de datos que emplean el lenguaje SQL. Y si tienes alguna duda, plantéala con todos los datos: gestor y versión que empleas, estructura de tus tablas y relaciones, tipos de campo, ejes. de cómo guardas los datos y lo que quieres sacar, y ya verás que alguien te echa una mano: no dudes en preguntar sobre la sintaxis y lo que hace cada parte; pero piensa que sin subconsultas tendrás que hacer varias consultas y trabajar con programación, por lo que te conviene (ves que soy pesado) una actualización.

Última edición por jurena; 16/03/2009 a las 09:33
  #17 (permalink)  
Antiguo 15/03/2009, 14:06
Avatar de Torus  
Fecha de Ingreso: enero-2002
Ubicación: Tú buscame y me encontraras
Mensajes: 413
Antigüedad: 22 años, 4 meses
Puntos: 0
Respuesta: Consulta maximo y minimo

En primer lugar decirte que de pesado nada de nada, seguire tus consejos (poco a poco) y me pondré a estudiar.
Espero que en otra ocasion pueda yo hecharte una mano, no soy ningun fiera en php pero me manejo muu bien, así que buscame.
Un cordial Saludo amigo
__________________
Hay tanto que aprender y tan poco tiempo
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 09:42.