Ayuda con consulta SQL

27/10/2004 - 10:51 por Oriol | Informe spam
Hola a todos,

Tengo una consulta que hacer y no se como hacerla, a ver si me podeis hechar
una mano.

Tengo una tabla con los siguientes campos: IdCliente, IdCentro, Fecha, Ok.
Los dos primeros son Ids como su nombre indica, el tercero una fecha y el
ultimo un booleano.

Mi intencion es recuperar la ultima fecha de cada centro por un cliente en
concreto y que ok=true.

Es decir, si tengo una tabla asi:

Idcliente IdCentro Fecha OK
1 1 1/1/04 true
1 3 25/1/04 true
1 5 5/4/04 true
1 3 9/3/04 true
1 5 9/7/04 false
...

me devuelva:
IdCliente IdCentro Fecha OK
1 1 1/1/04 true
1 3 9/3/04 true
1 5 5/4/04 true

Quiero que me salgan todos los centros que cumplan las condiciones de
OK=true, pero SOLO la ultima fecha. La mas reciente.

Gracias.

Un Saludo,
Oriol.

Preguntas similare

Leer las respuestas

#1 poker
27/10/2004 - 11:22 | Informe spam
Ahí la llevas...

select *
from TABLA A
WHERE Fecha = (select max(Fecha) from TABLA B WHERE A.IdCentro = B.IdCentro
and OK = 'true')
and OK = 'true'

puede que haya alguna consulta mas eficiente, pero esta es la primera que se
me ha ocurrido

"Oriol" <intranet[arroba]rvsa-itv.com> escribió en el mensaje
news:
Hola a todos,

Tengo una consulta que hacer y no se como hacerla, a ver si me podeis


hechar
una mano.

Tengo una tabla con los siguientes campos: IdCliente, IdCentro, Fecha, Ok.
Los dos primeros son Ids como su nombre indica, el tercero una fecha y el
ultimo un booleano.

Mi intencion es recuperar la ultima fecha de cada centro por un cliente en
concreto y que ok=true.

Es decir, si tengo una tabla asi:

Idcliente IdCentro Fecha OK
1 1 1/1/04 true
1 3 25/1/04 true
1 5 5/4/04 true
1 3 9/3/04 true
1 5 9/7/04 false
...

me devuelva:
IdCliente IdCentro Fecha OK
1 1 1/1/04 true
1 3 9/3/04 true
1 5 5/4/04 true

Quiero que me salgan todos los centros que cumplan las condiciones de
OK=true, pero SOLO la ultima fecha. La mas reciente.

Gracias.

Un Saludo,
Oriol.


Respuesta Responder a este mensaje
#2 poker
27/10/2004 - 11:22 | Informe spam
Ahí la llevas...

select *
from TABLA A
WHERE Fecha = (select max(Fecha) from TABLA B WHERE A.IdCentro = B.IdCentro
and OK = 'true')
and OK = 'true'

puede que haya alguna consulta mas eficiente, pero esta es la primera que se
me ha ocurrido

"Oriol" <intranet[arroba]rvsa-itv.com> escribió en el mensaje
news:
Hola a todos,

Tengo una consulta que hacer y no se como hacerla, a ver si me podeis


hechar
una mano.

Tengo una tabla con los siguientes campos: IdCliente, IdCentro, Fecha, Ok.
Los dos primeros son Ids como su nombre indica, el tercero una fecha y el
ultimo un booleano.

Mi intencion es recuperar la ultima fecha de cada centro por un cliente en
concreto y que ok=true.

Es decir, si tengo una tabla asi:

Idcliente IdCentro Fecha OK
1 1 1/1/04 true
1 3 25/1/04 true
1 5 5/4/04 true
1 3 9/3/04 true
1 5 9/7/04 false
...

me devuelva:
IdCliente IdCentro Fecha OK
1 1 1/1/04 true
1 3 9/3/04 true
1 5 5/4/04 true

Quiero que me salgan todos los centros que cumplan las condiciones de
OK=true, pero SOLO la ultima fecha. La mas reciente.

Gracias.

Un Saludo,
Oriol.


Respuesta Responder a este mensaje
#3 Oriol
27/10/2004 - 12:21 | Informe spam
Hola poker,

Gracias. De momento me soluciona el problema. Mas adelante ya intentare
optimizarla.

Saludos,
Oriol.

"poker" escribió en el mensaje
news:%
Ahí la llevas...

select *
from TABLA A
WHERE Fecha = (select max(Fecha) from TABLA B WHERE A.IdCentro B.IdCentro
and OK = 'true')
and OK = 'true'

puede que haya alguna consulta mas eficiente, pero esta es la primera que


se
me ha ocurrido

"Oriol" <intranet[arroba]rvsa-itv.com> escribió en el mensaje
news:
> Hola a todos,
>
> Tengo una consulta que hacer y no se como hacerla, a ver si me podeis
hechar
> una mano.
>
> Tengo una tabla con los siguientes campos: IdCliente, IdCentro, Fecha,


Ok.
> Los dos primeros son Ids como su nombre indica, el tercero una fecha y


el
> ultimo un booleano.
>
> Mi intencion es recuperar la ultima fecha de cada centro por un cliente


en
> concreto y que ok=true.
>
> Es decir, si tengo una tabla asi:
>
> Idcliente IdCentro Fecha OK
> 1 1 1/1/04 true
> 1 3 25/1/04 true
> 1 5 5/4/04 true
> 1 3 9/3/04 true
> 1 5 9/7/04 false
> ...
>
> me devuelva:
> IdCliente IdCentro Fecha OK
> 1 1 1/1/04 true
> 1 3 9/3/04 true
> 1 5 5/4/04 true
>
> Quiero que me salgan todos los centros que cumplan las condiciones de
> OK=true, pero SOLO la ultima fecha. La mas reciente.
>
> Gracias.
>
> Un Saludo,
> Oriol.
>
>


Respuesta Responder a este mensaje
#4 Oriol
27/10/2004 - 12:21 | Informe spam
Hola poker,

Gracias. De momento me soluciona el problema. Mas adelante ya intentare
optimizarla.

Saludos,
Oriol.

"poker" escribió en el mensaje
news:%
Ahí la llevas...

select *
from TABLA A
WHERE Fecha = (select max(Fecha) from TABLA B WHERE A.IdCentro B.IdCentro
and OK = 'true')
and OK = 'true'

puede que haya alguna consulta mas eficiente, pero esta es la primera que


se
me ha ocurrido

"Oriol" <intranet[arroba]rvsa-itv.com> escribió en el mensaje
news:
> Hola a todos,
>
> Tengo una consulta que hacer y no se como hacerla, a ver si me podeis
hechar
> una mano.
>
> Tengo una tabla con los siguientes campos: IdCliente, IdCentro, Fecha,


Ok.
> Los dos primeros son Ids como su nombre indica, el tercero una fecha y


el
> ultimo un booleano.
>
> Mi intencion es recuperar la ultima fecha de cada centro por un cliente


en
> concreto y que ok=true.
>
> Es decir, si tengo una tabla asi:
>
> Idcliente IdCentro Fecha OK
> 1 1 1/1/04 true
> 1 3 25/1/04 true
> 1 5 5/4/04 true
> 1 3 9/3/04 true
> 1 5 9/7/04 false
> ...
>
> me devuelva:
> IdCliente IdCentro Fecha OK
> 1 1 1/1/04 true
> 1 3 9/3/04 true
> 1 5 5/4/04 true
>
> Quiero que me salgan todos los centros que cumplan las condiciones de
> OK=true, pero SOLO la ultima fecha. La mas reciente.
>
> Gracias.
>
> Un Saludo,
> Oriol.
>
>


Respuesta Responder a este mensaje
#5 Alfredo Novoa
27/10/2004 - 21:22 | Informe spam
On Wed, 27 Oct 2004 11:22:54 +0200, "poker"
wrote:

select *
from TABLA A
WHERE Fecha = (select max(Fecha) from TABLA B WHERE A.IdCentro = B.IdCentro
and OK = 'true')
and OK = 'true'

puede que haya alguna consulta mas eficiente, pero esta es la primera que se
me ha ocurrido



En principio no hay consultas más eficientes que otras. Se supone que
los SGBD optimizan las consultas ellos solos.

Lo que pasa es que los optimizadores no son perfectos y a veces es
mejor no ponerles las cosas muy difíciles, pero esto ya es específico
de cada optimizador. Hay consultas que son bien optimizadas por
algunos SGBD y mal por otros.


Saludos
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida