SQL - Ayuda con "SELECT DISTINCT"

   
Vista:

Ayuda con "SELECT DISTINCT"

Publicado por Jose (2 intervenciones) el 24/02/2010 20:31:20
Hola, hoy no estoy muy iluminado y esto me vuelve loco. Tengo una tabla con codcliente y fecha.
Tengo que seleccionar la fecha mas reciente de cada cliente.

SELECT DISTINCT cod_cliente,fecha FROM cOrdenes

Ahi me devuelve todos los clientes pero necesito que solo sea con la mayor fecha.
Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda con SELECT DISTINCT

Publicado por Leonardo Josue (877 intervenciones) el 24/02/2010 20:46:00
Buenas Tardes José, prueba con esto:

SELECT a.cod_cliente, a.fecha FROM cOrdenes a where
a.fecha = (select max(fecha) from cOrdenes b where b.cod_cliente = a.cod_cliente)

Saludos y comenta si resuelve tu problema.

Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con SELECT DISTINCT

Publicado por Jose (2 intervenciones) el 24/02/2010 20:48:10
Anduvo de maravillas!!! Muchisimas gracias por la ayuda

Saludos
Jose
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda urgente

Publicado por kriss (5 intervenciones) el 25/02/2010 17:04:14
hola tengo un problema similar tengo dos tablas OBRAS con los campos id_obra, nombre_obra y otra tabla INFORMES id_informe, id_obra , estado necesito las obras (id_obra, nombre_obra, id_informe, estado) con el mayor id_informe..por favor si alguien puede ayudarme urgenteee, gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda urgente

Publicado por Leonardo Josue (877 intervenciones) el 25/02/2010 18:47:58
Buenas Tardes Kriss:

A ver si entendí más o menos lo que necesitas. Voy a suponer que tu tabla OBRAS tiene información más o menos como esta:

Id_Obra|Nombre_Obra
---------------------------------
1|Obra uno
2|Obra dos
3|Obra tres

y que la tabla INFORMES tiene más o menos esta información:
Id_Informe|Id_Obra|Estado
-------------------------------------
1|1|Iniciando
2|1|En desarrollo
3|1|Finalizada
4|2|Iniciando
5|3|Iniciando
6|3|En desarrollo

Por lo tanto, la salída que esperarías para este ejemplo sería
Id_Obra|Nombre_Obra|Id_informe|Estado
---------------------------------------------------------
1|Obra uno|3|Finalizada
2|Obra dos|4|Iniciando
3|Obra tres|6|En desarrollo

Por lo tanto, la consulta quedaría así:

SELECT o.*, i.Id_Informe, i.Estado
FROM OBRAS o
INNER JOIN INFORMES i ON o.Id_Obra = i.Id_Obra
WHERE i.Id_Informe = (SELECT Max(Id_Informe) FROM INFORMES i2 where i2.Id_Obra = o.Id_Obra)

Saludos y comentas si te sirvió el código.

Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda urgente

Publicado por kriss (5 intervenciones) el 01/03/2010 18:52:53
Hola Leo muchas gracias por responder, es exactamente lo que quería pero al ejecutar la consulta me sale un error "Invalid object name informes" y te remarco en donde no reconoce la tabla informes

SELECT o.*, i.Id_Informe, i.Estado
FROM OBRAS o
INNER JOIN INFORMES i ON o.Id_Obra = i.Id_Obra
WHERE i.Id_Informe = (SELECT Max(Id_Informe) FROM ***INFORMES*** i2 where i2.Id_Obra = o.Id_Obra)

alguna sugerencia?? te estare agradecida
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda urgente

Publicado por Leonardo Josue (877 intervenciones) el 01/03/2010 19:22:43
Qué manejador de BD estás utilizando???

Leo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda urgente

Publicado por kriss (5 intervenciones) el 01/03/2010 19:31:55
Sql server 2000
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda urgente

Publicado por kriss (5 intervenciones) el 01/03/2010 20:05:01
ya me funcionó!!, a la tabla informes le puse el nombre del "owner" adelante, ya que a esta no le ponia el propietario automáticamente y a las otras si, ahora tengo otro problema: hay obras que no tienen informe y a esas tambien las necesito listarlas..muchas gracias por tu ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda urgente

Publicado por Leonardo Josue (877 intervenciones) el 01/03/2010 20:56:52
En ese caso tienes que cambiar el INNER JOIN por un LEFT JOIN y filtrar la información para el caso de las obras que no tienen Informe... quedaría más o menos así

SELECT o.*, i.Id_Informe, i.Estado
FROM OBRAS o
LEFT JOIN INFORMES i ON o.Id_Obra = i.Id_Obra
WHERE
i.Id_Informe = (SELECT Max(Id_Informe) FROM INFORMES i2 where i2.Id_Obra = o.Id_Obra)
or i.Id_Informe is null

OJO con anteponer el esquema o propietario de las tablas correspondientes.

Saludos y espero que te sirva el código.

Leo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda urgente

Publicado por kriss (5 intervenciones) el 01/03/2010 21:27:47
muchas Gracias de 10 el codigo, no tuve ningun problema ..nuevamente gracias por tu ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar