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

[SOLUCIONADO] Duda consulta SQL

Estas en el tema de Duda consulta SQL en el foro de Mysql en Foros del Web. Buenos días, a ver si me podéis echar una mano. Tengo una tabla con los campos num_oferta, version y cantidad (hay mas campos pero son ...
  #1 (permalink)  
Antiguo 21/11/2013, 05:35
 
Fecha de Ingreso: julio-2006
Mensajes: 20
Antigüedad: 17 años, 9 meses
Puntos: 0
Duda consulta SQL

Buenos días, a ver si me podéis echar una mano.

Tengo una tabla con los campos num_oferta, version y cantidad (hay mas campos pero son los que interesan):

Código:
num_oferta         version       cantidad
1                       1              10
1                       2              35
2                       1              50
En la tabla no hay ningún campo que sea clave por sí mismo. Como véis el numero de oferta se puede repetir, y para cada versión puede tener distinta cantidad. Bueno pues yo lo que quiero es sacar las filas q sean la máxima version para cada num_oferta. Hasta ahora con esta consulta he podido hacer lo siguiente:
Código:
select max(version), num_oferta from tabla group by num_oferta

que me daría de resultado:

num_oferta      version
1                    2
2                    1
Me saca la maxima versión para cada num_oferta, pero si le incluyo el campo cantidad ya me saca todas las filas sin filtrar por la máxima versión:

Lo que quiero es una consulta que me devuelva:

Código:
num_oferta         version       cantidad
1                       2              35
2                       1              50
Se que con un procedimiento almacenado se podría hacer (recorriendo cada fila del resultado de la primera consulta), pero estoy seguro de que directamente con una consulta también es posible. Alguién tiene alguna idea de como podría ser?

Muchas gracias
  #2 (permalink)  
Antiguo 21/11/2013, 05:55
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 1 mes
Puntos: 26
Respuesta: Duda consulta SQL

Así a lo ràpido prueba con:

Código:
SELECT num_oferta, version, cantidad
FROM oferta o1
WHERE version = ( 
SELECT MAX( o2.version ) 
FROM oferta o2
WHERE o1.num_oferta = o2.num_oferta )
__________________
Siempre fallaras el 100% de los tiros que no te atrevas a lanzar.
El 98% de los adolescentes han fumado, si eres del dichoso 2% que no lo ha hecho, copia y pega esto en tu firma.
  #3 (permalink)  
Antiguo 21/11/2013, 06:11
 
Fecha de Ingreso: julio-2006
Mensajes: 20
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: Duda consulta SQL

Gracias, me sirve, otra forma sería:


Código:
select * from tabla t1 join 
(select max(version) as version, num_oferta from tabla group by num_oferta) t2 
on t2.num_oferta = t1.num_oferta and t2.version = t1.version
  #4 (permalink)  
Antiguo 21/11/2013, 06:13
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 1 mes
Puntos: 26
Respuesta: Duda consulta SQL

Es lo mismo, solo que uno utilizas inner join i con el otro subconsulta. Pero diria que viene a ser lo mismo. :)
__________________
Siempre fallaras el 100% de los tiros que no te atrevas a lanzar.
El 98% de los adolescentes han fumado, si eres del dichoso 2% que no lo ha hecho, copia y pega esto en tu firma.

Etiquetas: campo, select, sql, tabla
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 12:56.