Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: novalida en 3 Julio 2012, 20:16 pm



Título: Consulta con dos campos máximos
Publicado por: novalida en 3 Julio 2012, 20:16 pm
Hola!!!

llevo un par de días dando vueltas a una consulta que en su día no supe cómo hacerla. Supongo que se realizaría con un GROUP BY aunque así no soy capaz  y por subconsultas no sé si no veo la solución o es que me he encabezonado en hacerlas mal :S

Si en una tabla tengo tres campos:

  • campo_valor
  • num_mes
  • anyo

Me gustaría obtener en una consulta los valores de campo_valor en los que la fecha sea la mayor en la que existan valores.

El problema que tengo es que cuando un año (campo anyo) no está completo, por ejemplo 2012, el valor máximo de mes (num_mes) no sería 12, como en el caso de un año que sí tuviera valores para el mes 12, como por ejemplo 2011.

No sé si me he explicado bien, pero llevo dándole vueltas a esto y no doy con la solución.

No pido la consulta, porque esto no es una tarea ni nada parecido, sino más bien para mejorar mi autoformación, pero agradecería que alguien pudiera darme alguna pista.
La solución que en su día utilicé fue mediante un bucle por código, pero me gustaría aprender esa consulta dado que creo que sería más elegante.


Muchas gracias y un saludo!! :)


Título: Re: Consulta con dos campos máximos
Publicado por: GenR_18 en 4 Julio 2012, 23:42 pm
Podrías usar la clausula WHERE con operadores < o > .

También darnos ejemplos de cómo lo estás haciendo estaría perfecto.
Suerte.


Título: Re: Consulta con dos campos máximos
Publicado por: novalida en 11 Julio 2012, 10:26 am
Hola!!!
Perdón por el retraso pero no he estado disponible dede hace un tiempo.

He encontrado una solución y creo que es correcta:


Código:

Select anyo, mes, valor from tabla where mes =
(Select max(mes) from tabla where anyo =
(select max (anyo) from tabla where condicional = condicion1))


No obstante me parce un poco aparatotosa al llevar una subconsulta dentro de otra, por lo que agradecería si alguien pudiera decirme si se podría hacer mediante agrupación GROUP BY.


Saludos!!!


Título: Re: Consulta con dos campos máximos
Publicado por: novalida en 12 Julio 2012, 14:45 pm
Me respondo a mí mismo.... :S

Al final no es así, puesto que si hay una condición, una cuarta columna en la tabla sobre la que filtrar la selección, se seleccionarían todos los resultados para ese mes y ese anyo, independientemente del valor indicado en la columna de condicional.


¿¿Alguien puede arrojar un poco de luz sobre la consulta???


Muchas gracias!!! :)