Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-08-2004
agova agova is offline
Miembro
 
Registrado: may 2003
Posts: 69
Poder: 15
agova Va por buen camino
Obtener Todo El Registro De Una Tabla Aunque Aunque Este Agrupado Por 2 Campos

Tratare de explicarles mi problema con datos, tengo la siguiente informacion
1,1,2 ,01/08/04
1,1,5 ,03/08/04
1,1,9 ,02/08/04
1,1,12 ,06/08/04
1,1,3 ,12/08/04
1,1,41 ,10/08/04
1,1,201 ,11/08/04
1,2,2 ,01/08/04
1,2,5 ,02/08/04
1,2,9 ,06/08/04
1,2,12 ,05/08/04
1,2,3 ,09/08/04
1,2,41 ,10/08/04
1,2,209 ,11/08/04

Quiero obtener el registro completo (los 4 campos) del registro con la Max(Fecha) agrupado solo por los primeros dos campos.
Esto es

1,1,3 ,12/08/04
1,2,209 ,11/08/04

Alguien puede ayudarme por favor.
De antemano agradezco sus respuestas.
Responder Con Cita
  #2  
Antiguo 10-08-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.243
Poder: 21
jachguate Va por buen camino
Se me ocurre esto:

Código SQL [-]
select t1.campo1, t1.campo2, t1.campo3, t1.fecha
  from tabla t1
 where t1.fecha = (select max(t2.fecha)
                     from tabla t2
                    where t2.campo1 = t1.campo1
                      and t2.campo2 = t1.campo2)

Aunque no lo he probado dado que no tengo un motor a mano... probalo y espero que regreses a decir si te sirvió o no.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 11-08-2004
agova agova is offline
Miembro
 
Registrado: may 2003
Posts: 69
Poder: 15
agova Va por buen camino
Talking

Muchas gracias jachguate

Primeramente por contestar tan pronto y seguidamente por que funciono exactamente como yo esperaba a la primera.

Me gustaria de una vez saber si puedo actualizar el valor dependiendo de los resultados de esta misma consulta a una tabla.

Agradecería si alguien me puede ayudar.

Gracias de nuevo jachguate (Excelente foro)
Responder Con Cita
  #4  
Antiguo 11-08-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.243
Poder: 21
jachguate Va por buen camino
Cool

Cita:
Empezado por agova
Me gustaria de una vez saber si puedo actualizar el valor dependiendo de los resultados de esta misma consulta a una tabla.
Depende de lo que esto signifique...

Código SQL [-]
Update tabla
  set valor = select, bla bla
si se puede.

Otras cosas.. dependerá.

Cita:
Empezado por agova
(Excelente foro)
Yo pienso lo mismo, por eso estoy aqui..

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate

Última edición por jachguate fecha: 11-08-2004 a las 01:28:27.
Responder Con Cita
  #5  
Antiguo 11-08-2004
agova agova is offline
Miembro
 
Registrado: may 2003
Posts: 69
Poder: 15
agova Va por buen camino
Question

Hice algo como esto

Update ordenp set ordenp = SELECT T1.ORDENP,T1.BULTO,T1.OPERACION,T1.RECEPCION
FROM PRODUCCIONC T1
WHERE T1.RECEPCION=
(SELECT MAX(T2.RECEPCION) FROM PRODUCCIONC T2
WHERE T1.ORDENP=T2.ORDENP AND T1.BULTO=T2.BULTO)
ORDER BY ORDENP,BULTO

Pero me da el error

parse error at or near "SELECT"

Cabe mencionar que quiero actualizar los valores de la tabla ordenp, los campos que quiero actualizar tienen los mismos nombre ordenp y bulto como los que me devuelve la consulta.
Responder Con Cita
  #6  
Antiguo 11-08-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.243
Poder: 21
jachguate Va por buen camino
Cool

El select debe devolver, como es de esperarse un solo resultado. Es decir, una sola tupla con una sola columna. También debiera estar encerrado entre paréntesis (mea culpa, pues yo los he obviado en mi respuesta anterior).

Por último, salvo que querras que todas las filas de la tabla ordenp tengan el mismo valor... debiera existir algun conjunto de campos que correlacionen entre ordenp y el select (produccionc), de manera que el valor establecido para cada fila sea el adecuado.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #7  
Antiguo 11-08-2004
agova agova is offline
Miembro
 
Registrado: may 2003
Posts: 69
Poder: 15
agova Va por buen camino
Unhappy

Gracias ya lo corregi, y queda de este modo:

Update ordenp set ordenp = (SELECT T1.ORDENP,T1.BULTO,T1.OPERACION,T1.RECEPCION
FROM PRODUCCIONC T1
WHERE T1.RECEPCION=
(SELECT MAX(T2.RECEPCION) FROM PRODUCCIONC T2
WHERE T1.ORDENP=T2.ORDENP AND T1.BULTO=T2.BULTO)
ORDER BY ORDENP,BULTO)

y como era de esperarse como me lo habias dicho devuelve el error: "subselect must have only one field" entiendo que haya que establecer una condicion en el SQL para que lo de produccionc con llave ordenp,bulto pueda ser actualizado a lo que devuelve la consulta inicial tambien con campos ordenp, bulto. cabe mencionar que quiero que cada tupla produccionc sea actualizada al valor correspondiente de la consulta.

Si alguien puede ayudarme se lo agradezco.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 04:08:30.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi