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

No me sale este SQL

Estas en el tema de No me sale este SQL en el foro de Bases de Datos General en Foros del Web. SELECT codigo, id_estado, fecha from recorrido where recorrido.id_estado = '3' order by codigo Como puedo hacer un SQL que me de el codigo cuyos estados ...
  #1 (permalink)  
Antiguo 06/06/2006, 10:23
Avatar de elwolos  
Fecha de Ingreso: febrero-2004
Ubicación: Argentina
Mensajes: 251
Antigüedad: 20 años, 2 meses
Puntos: 0
No me sale este SQL

SELECT codigo, id_estado, fecha
from recorrido
where recorrido.id_estado = '3'
order by codigo

Como puedo hacer un SQL que me de el codigo cuyos estados sean iguales a 3 pero que me de el de la fecha mas nueva.
ya que puede ser que un codigo este 2 veces en estado 3 pero en distintas fechas.

Muchas Gracias... (toy agotado mi coco no da mas!)

Gracias!!
__________________
W:-DL
...estas cosas pasan una sola vez en la vida... capaz dos.
Diseño Web - Desarrollo Web
  #2 (permalink)  
Antiguo 06/06/2006, 10:34
Avatar de jahepi
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Querétaro
Mensajes: 1.124
Antigüedad: 19 años, 4 meses
Puntos: 43
Hola elWolos!

No sé si te refieres a una consulta como esta:

Código:
SELECT codigo, id_estado, fecha FROM recorrido WHERE id_estado = 3 ORDER BY codigo, fecha DESC
Un saludo!
  #3 (permalink)  
Antiguo 06/06/2006, 11:46
Avatar de elwolos  
Fecha de Ingreso: febrero-2004
Ubicación: Argentina
Mensajes: 251
Antigüedad: 20 años, 2 meses
Puntos: 0
Hola jahepi..
Esta buena tu consulta, pero la unica diferencia es que me ordena todo con la fecha mas reciente, pero no me muestra solo la fecha mas reciente sino que me muestra todas las fechas del mismo codigo.
Yo necesitaria que por ejemplo si tengo 3 codigos iguales con distintas fechas, entonces el SQL me diera solo el codigo con la fecha ma nueva.

GRACIAS!
__________________
W:-DL
...estas cosas pasan una sola vez en la vida... capaz dos.
Diseño Web - Desarrollo Web
  #4 (permalink)  
Antiguo 06/06/2006, 11:55
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años
Puntos: 3
Intenta si te sale con esto:
Cita:
SELECT codigo, id_estado, fecha
from recorrido r1
where r1.id_estado = '3' AND
fecha=(select max(fecha) from recorrido
where id_estado=r1.id_estado)
order by codigo
Suerte
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #5 (permalink)  
Antiguo 06/06/2006, 13:00
Avatar de elwolos  
Fecha de Ingreso: febrero-2004
Ubicación: Argentina
Mensajes: 251
Antigüedad: 20 años, 2 meses
Puntos: 0
UUUuuu casi pero no! me Da como resultado todos los que estan en estado 3 pero con la fecha mas alta de todas.
ejemplo
si hay uno que esta en estado 3 y tiene fecha 10/10/2010
entonces el resultado de la consulta sera ese campo solo y todos los que esten en estado 3 pero con el ultima fecha
por ejemplo si tengo
codigo 1 estado 3 fecha 10/10/2010
codigo 1 estado 3 fecha 11/10/2010
codigo 2 estado 3 fecha 10/10/2010
el resultado deberia ser
codigo 1 estado 3 fecha 11/10/2010
codigo 2 estado 3 fecha 10/10/2010
Muchas Gracias desde ya por todos sus ezfuerzos, igualmente entre prueba y prueba yo sigo sin encontrarle la vuelta!
__________________
W:-DL
...estas cosas pasan una sola vez en la vida... capaz dos.
Diseño Web - Desarrollo Web
  #6 (permalink)  
Antiguo 06/06/2006, 13:31
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años
Puntos: 3
Prueba con esto :
Cita:
SELECT codigo, id_estado, fecha
from recorrido r1
where r1.id_estado = '3' AND
fecha=(select max(fecha) from recorrido
where id_estado=r1.id_estado and codigo=r1.codigo)
order by codigo;
Espero tu respuesta
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #7 (permalink)  
Antiguo 07/06/2006, 07:02
Avatar de elwolos  
Fecha de Ingreso: febrero-2004
Ubicación: Argentina
Mensajes: 251
Antigüedad: 20 años, 2 meses
Puntos: 0
C R A N E O ! ! !
G E N I O ! !
Muchisimas Gracias!!
__________________
W:-DL
...estas cosas pasan una sola vez en la vida... capaz dos.
Diseño Web - Desarrollo Web
  #8 (permalink)  
Antiguo 07/06/2006, 07:25
Avatar de elwolos  
Fecha de Ingreso: febrero-2004
Ubicación: Argentina
Mensajes: 251
Antigüedad: 20 años, 2 meses
Puntos: 0
Un retoque mas (si es que se puede hacer por SQL)

El codigo de pequeño mauro es perfecto... pero ¿se podria agregar que me muestre solamente los estados '3' que no sean tambien estado '5'?

por ejemplo si tengo
codigo 1 estado 3 fecha 10/10/2010
codigo 1 estado 3 fecha 11/10/2010
codigo 1 estado 5 fecha 11/10/2010
codigo 2 estado 3 fecha 10/10/2010

el resultado tendria que ser
codigo 2 estado 3 fecha 10/10/2010

Muchisismas gracias por adelantado a todos!! gracias muchas gracias!
__________________
W:-DL
...estas cosas pasan una sola vez en la vida... capaz dos.
Diseño Web - Desarrollo Web
  #9 (permalink)  
Antiguo 07/06/2006, 08:38
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años
Puntos: 3
Hola elwolos, no entendi mucho lo que deseas:
Quieres, que te salga del resultado, el mayor código tambien?.
Que no te tome en cuenta el estado 5 comentas?, si es asi, la condición estado='3' hace ya eso.....

Saludos....
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #10 (permalink)  
Antiguo 07/06/2006, 10:49
Avatar de elwolos  
Fecha de Ingreso: febrero-2004
Ubicación: Argentina
Mensajes: 251
Antigüedad: 20 años, 2 meses
Puntos: 0
Si esta bien lo que decis, pero me refiero a que si el codigo X tiene un estado 3 y tuvo alguna vez un estado 5, que no me lo muestre. O sea que solo me muestre los que tuvieron unicamente estado 3 y nunca estado 5
__________________
W:-DL
...estas cosas pasan una sola vez en la vida... capaz dos.
Diseño Web - Desarrollo Web
  #11 (permalink)  
Antiguo 07/06/2006, 11:16
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años
Puntos: 3
Que tal elwolos, entendi
Veamos si cualquiera de estas dos consultas te ayuda:

Cita:
SELECT codigo, estado, fecha
from recorrido r1
where r1.estado = '3' AND
fecha=(select max(fecha) from recorrido
where estado=r1.estado and codigo=r1.codigo) and
(select count(*) from recorrido r2
where r2.codigo=r1.codigo and r2.estado!=r1.estado)=0
order by codigo;
o esta
Cita:
SELECT codigo, estado, fecha
from recorrido r1
where r1.estado = '3' AND
fecha=(select max(fecha) from recorrido
where estado=r1.estado and codigo=r1.codigo) and not exists
(select * from recorrido r2
where r2.codigo=r1.codigo and r2.estado!=r1.estado)
order by codigo;
Cualquiera de las dos te da el mismo resultado. Solo que estoy haciendo la consulta si es que el codigo tambien ha tenido otro estado (asi sea 5 o no).
Si quieres que solo sea 5, cambiale el where en la segunda sub-consulta

Cita:
SELECT codigo, estado, fecha
from recorrido r1
where r1.estado = '3' AND
fecha=(select max(fecha) from recorrido
where estado=r1.estado and codigo=r1.codigo) and
(select count(*) from recorrido r2
where r2.codigo=r1.codigo and r2.estado='5')=0
order by codigo;
Igual en el segundo select.
Espero que sea lo que deseas, saludos
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #12 (permalink)  
Antiguo 07/06/2006, 12:51
Avatar de elwolos  
Fecha de Ingreso: febrero-2004
Ubicación: Argentina
Mensajes: 251
Antigüedad: 20 años, 2 meses
Puntos: 0
Buenisimo Gracias!!... pero las tres dan el mismo resultado que el 2do codigo que me habias pasado... para mi que no se puede hacer por SQL, debe ser demaciado complejo...
Te lo explico devuelta..
si un codigo paso por 3 estados y digamos estado 1, 3, 5, 6
y otro codig paso por 2 estados y digamos estado 1, 3

yo quisiera una consulta que me muestre solo el codigo que tienen estado 3 y no 5, ni 6.
y teniendo en cuenta que puede haber estado en el estado 3 dos veces en dos fechas distintas pero que me de el de la fecha mas actual.

Un Kilombo, no?
desde ya gracias a todos... yo me empiezo a resignar..., para mi que no se puede hacer por SQL.

Gracias!! saludos
__________________
W:-DL
...estas cosas pasan una sola vez en la vida... capaz dos.
Diseño Web - Desarrollo Web
  #13 (permalink)  
Antiguo 07/06/2006, 14:35
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años
Puntos: 3
Hola elwolos:
A ver si te entiendo. Tu deseas como resultado los códigos con estado 3, pero que nunca les han sido asignados otros estados, tan solo el estado 3?, y de ella sacar el codigo con fecha más reciente?.
Esta consulta lo hace, lo he probado con los datos que me diste, estas seguro que eso no deseas?.
Cita:
SELECT codigo, estado, fecha
from recorrido r1
where r1.estado = '3' AND
fecha=(select max(fecha) from recorrido
where estado=r1.estado and codigo=r1.codigo) and
(select count(*) from recorrido r2
where r2.codigo=r1.codigo and r2.estado!=r1.estado)=0
order by codigo;
Le estoy agregando la condición que tome en cuenta solo los códigos que no tengan estados diferentes a '3', salvo que entendi mal .
Si gustas puedes mandarme un M.P. o escribir a mi correo (mauro_alberto(arroba)hotmail.com).
Saludos
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
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 00:56.