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

MySQL: Sacar el valor más alto de tres números

Estas en el tema de MySQL: Sacar el valor más alto de tres números en el foro de Bases de Datos General en Foros del Web. Buenas, Necesito hacer una consulta en MySQL y ando un poco perdido. El caso es que tengo una tabla con una serie de campos. Tres ...
  #1 (permalink)  
Antiguo 04/04/2005, 06:34
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 22 años
Puntos: 17
MySQL: Sacar el valor más alto de tres números

Buenas,

Necesito hacer una consulta en MySQL y ando un poco perdido.

El caso es que tengo una tabla con una serie de campos. Tres de ellos (los que me interesan para la consulta) son númericos.

Lo que quiero es sacar los registros que coicidan con lo siguiente:

- El valor del campo1 debe ser el valor máximo de ese campo.
- El valor del campo2 debe ser el valor máximo de ese campo (pero coincidiento con el valor máximo del campo1)
- El valor del campo3 debe ser el valor máximo de ese campo (pero coincidiento con el valor máximo del campo2)

Por ejemplo si tenemos los siguientes datos:

Campo1 Campo2 Campo3
------- -------- -------
1 2 2
5 1 7
1 25 1
8 3 6
6 7 21
8 3 7
8 1 15

En éste caso debería devolverme la fila:
8 3 7
campo1: 8 (es el valor más alto de ese campo en toda la tabla)
campo2: 3 (es el valor más alto de ese campo, que además coincida con el valor más alto del campo1)
campo3: 7 (es el valor más alto de ese campo, que además coincida con el valor más alto del campo2 que a su vez coincida con el valor más alto del campo1)


No sé si me habré explicado bien, espero que se entienda...
  #2 (permalink)  
Antiguo 04/04/2005, 11:56
 
Fecha de Ingreso: abril-2005
Mensajes: 2
Antigüedad: 19 años, 7 meses
Puntos: 0
un simple Select

Utiliza select y en el where ahi especificas la condicion con el max

SELECT campo1,campo2,campo3 FROM tabla WHERE ((MAX(campo1)>campo2)and (MAX(campo1)>campo3))

algo asi es lo que quieres???
  #3 (permalink)  
Antiguo 04/04/2005, 16:59
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 22 años
Puntos: 17
No, creo que esa select no me valdría, gracias de todas formas.

Lo que necesito sería algo así:

1- Sacar todos los registros en los que el campo1 tenga su valor máximo.
2- De ese conjunto de registros (pueden ser uno o cien) tengo que seleccionar los que tengan el valor máximo del campo2 (pero tienen que cumplir la condición anterior).
3- En éste punto tendré uno o más registros, cuyo campo1 será el valor máximo de TODA la tabla y cuyo campo2 será el valor más alto. No el más alto de la tabla, sino el más alto de los que se ajusten a la primera condición.
4- En éste conjunto de resultados deberé seleccionar él o los que tengan el campo3 más alto.

Graficamente sería lo siguiente:

C1 - C2 - C3
01 - 58 - 04
12 - 16 - 99
15 - 25 - 66
29 - 04 - 85
28 - 05 - 90
29 - 05 - 03
29 - 17 - 01
29 - 16 - 45
12 - 99 - 01
29 - 17 - 21
28 - 25 - 52

De aquí habría que hacer:

29 - 04 - 85
29 - 05 - 03
29 - 17 - 01
29 - 16 - 45
29 - 17 - 21

Cojemos estos porque su campo1 es el mayor de la tabla.
-

29 - 17 - 01
29 - 17 - 21

Después seleccionamos los que tengan el campo2 mayor (pero no el mayor de la tabla, sino el mayor de los seleccionados previamente).
-

Y por último:

29 - 17 - 21

Ya que esl campo3 es el mayor de los dos que cumplían las condiciones anteriores.
-

En éste caso sólo ha quedado un registro, pero me es indiferente que queden varios, sólo me interesan esos tres valores.

No sé si se habrá entendido lo que quiero hacer, ni si se podrá hacer con un sólo select...

Un saludo!
  #4 (permalink)  
Antiguo 06/04/2005, 06:16
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 22 años
Puntos: 17
Bueno, entiendo que no habría manera de hacer lo que quiero en un sólo Select, no?

Tendré que hacer un par de ellos y tratar los resultados con PHP.

Saludos.
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 14:22.