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

Ayuda con consulta compleja

Estas en el tema de Ayuda con consulta compleja en el foro de Bases de Datos General en Foros del Web. Estimados, hola a todos!,el asunto es el siguiente, de una relacion con la siguiente forma, Relacion( id1,id2,number ,descrip) quiero seleccionar solo los registros que para ...
  #1 (permalink)  
Antiguo 28/03/2006, 12:39
 
Fecha de Ingreso: septiembre-2004
Ubicación: Montevideo
Mensajes: 346
Antigüedad: 19 años, 7 meses
Puntos: 0
Ayuda con consulta compleja

Estimados,

hola a todos!,el asunto es el siguiente, de una relacion con la siguiente forma,

Relacion(id1,id2,number,descrip)

quiero seleccionar solo los registros que para los mismos id1 e id2, tengan la mayor fecha.

Tiene que ser usando una condicion en la clausula WHERE.

Se les ocurre alguna manera?

Un ejemplo seria, que la consultaaplicada a llos siguientes datos,
id1----------id2----------number----------descrip
1 ---------- 2 ---------- 3 ---------- hola
1 ---------- 2 ---------- 4 ---------- hola
1 ---------- 2 ---------- 5 ---------- hola
1 ---------- 2 ---------- 6 ---------- hola

Me deberia retornar:
1 ---------- 2 ---------- 6 ---------- hola

Gracias a todos!

Liber
__________________
Liber
  #2 (permalink)  
Antiguo 28/03/2006, 12:51
 
Fecha de Ingreso: septiembre-2004
Ubicación: Montevideo
Mensajes: 346
Antigüedad: 19 años, 7 meses
Puntos: 0
Otro ejemplo para complementar el anterior:

id1----------id2----------number----------descrip
1 ---------- 2 ---------- 3 ---------- hola
1 ---------- 2 ---------- 4 ---------- hola
1 ---------- 2 ---------- 5 ---------- hola
1 ---------- 2 ---------- 6 ---------- hola
2 ---------- 3 ---------- 4 ---------- hola
2 ---------- 3 ---------- 6 ---------- hola
2 ---------- 3 ---------- 9 ---------- hola

Me deberia retornar:
1 ---------- 2 ---------- 6 ---------- hola
2 ---------- 3 ---------- 9 ---------- hola

Pongo un ejemplo mas completo por las dudas.

Saludos
__________________
Liber
  #3 (permalink)  
Antiguo 28/03/2006, 13:05
Avatar de haron  
Fecha de Ingreso: febrero-2004
Ubicación: Cádiz (refinitivo)
Mensajes: 632
Antigüedad: 20 años, 2 meses
Puntos: 3
supongo que querras decir "que tengan el mayor 'number'".

podrias hacerlo asi si tu gestor de bases de datos soporta subconsultas:
Código:
select
  t1.id1,
  t1.id2,
  max(t1.number) as number,
  (select t2.descrip from tabla as t2 where t2.id1 = t1.id1 and t2.id2 = t1.id1 and and t2.number = t1.number) as descrip
from tabla as t1
group by t1.id1, t1.id2
si tu gestor de bases de datos no soporta subconsultas, la mejor opcion es realizar dos consultas por separado:
Código:
select id1, id2, max(number) as number
from tabla
group by id1, id2
luego vas recorriendo los datos de esta consulta y para cada terna (id1, id2, number) devuelta por la consulta anterior lanzas la consulta:
Código:
select descrip
from tabla
where id1 = <parametro id1>
and id2 = <parametro id2>
and number = <parametro number>
__________________
Si ocurre algo importante, estamos afuera fumándonos unos cigarritos.
  #4 (permalink)  
Antiguo 28/03/2006, 13:27
 
Fecha de Ingreso: septiembre-2004
Ubicación: Montevideo
Mensajes: 346
Antigüedad: 19 años, 7 meses
Puntos: 0
Efectivamente, quise decir que tengan el mayor number.

Mi gestor acepta subconsultas, pero el resultado esperado no fue el obtenido.
Me devuelve resultados dulpicados y me sugirio que se necsitaba agrupar tambien por number....

Gracias!
__________________
Liber
  #5 (permalink)  
Antiguo 28/03/2006, 14:09
Avatar de haron  
Fecha de Ingreso: febrero-2004
Ubicación: Cádiz (refinitivo)
Mensajes: 632
Antigüedad: 20 años, 2 meses
Puntos: 3
supongo que la clave primaria de tu tabla esta formada por los campos td1, td2 y number, no?

puede ser tu base de datos oracle? si es asi. cuando realizas una consulta de este tipo:

select campo1, campo2, campo3
from table
group by campo1, campo2

te sugerira que agrupes tambien por campo3
__________________
Si ocurre algo importante, estamos afuera fumándonos unos cigarritos.
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 20:44.