Conseguir un query que me devuelva esto

17/11/2008 - 10:43 por Baldor | Informe spam
Hola grupo, necesito ayuda con una SQL que no consigo hacer:

Tengo lo siguiente:

select TBLAlbaranesDetalles.id_articulo, TBLAlbaranes.fechaAlbaran,
TBLAlbaranes.nombreCliente
from TBLAlbaranesDetalles INNER JOIN TBLAlbaranes
ON TBLAlbaranesDetalles.id_albaran=TBLAlbaranes.id_albaran
where TBLAlbaranesDetalles.id_articulo IN
('0','0201095J','02050124','02050130')
order by TBLAlbaranes.fechaAlbaran DESC


Esto me podría devolver algo asi como:

0 2008-05-12 00:00:00 PEPE GOMEZ
0 2008-04-09 00:00:00 PEDRO GARCIA
0 2008-04-07 00:00:00 PEDRO GARCIA
02050130 2008-04-02 00:00:00 RAMON LOPEZ
02050130 2008-03-13 00:00:00 JOSE LUIS SANZ


Lo que necesito es que la SQL me devuelva solamente la fila más reciente, o
sea:

0 2008-05-12 00:00:00 PEPE GOMEZ
02050130 2008-04-02 00:00:00 RAMON LOPEZ


¿Alguien me puede ayudar?

Preguntas similare

Leer las respuestas

#1 Ricardo Junquera
17/11/2008 - 11:27 | Informe spam
Hola
Puedes intentar obtener la fecha mas reciente e incluirlo en tu select, algo
así


select TBLAlbaranesDetalles.id_articulo, TBLAlbaranes.fechaAlbaran,
TBLAlbaranes.nombreCliente
from TBLAlbaranesDetalles INNER JOIN TBLAlbaranes
ON TBLAlbaranesDetalles.id_albaran=TBLAlbaranes.id_albaran
where TBLAlbaranesDetalles.id_articulo IN
('0','0201095J','02050124','02050130')



AND TBLAlbaranes.fechaAlbaran=(SELECT MAX(fechaAlbaran) FROM TBLAlbaranes)

order by TBLAlbaranes.fechaAlbaran DESC





Ricardo Junquera
Consultor Business Intelligence

BG&S Online Consultores
Ganadora del Premio Microsoft Business Awards 2008.
Partner de Soluciones : Satisfacción de Cliente.



"Baldor" wrote:

Hola grupo, necesito ayuda con una SQL que no consigo hacer:

Tengo lo siguiente:

select TBLAlbaranesDetalles.id_articulo, TBLAlbaranes.fechaAlbaran,
TBLAlbaranes.nombreCliente
from TBLAlbaranesDetalles INNER JOIN TBLAlbaranes
ON TBLAlbaranesDetalles.id_albaran=TBLAlbaranes.id_albaran
where TBLAlbaranesDetalles.id_articulo IN
('0','0201095J','02050124','02050130')
order by TBLAlbaranes.fechaAlbaran DESC


Esto me podría devolver algo asi como:

0 2008-05-12 00:00:00 PEPE GOMEZ
0 2008-04-09 00:00:00 PEDRO GARCIA
0 2008-04-07 00:00:00 PEDRO GARCIA
02050130 2008-04-02 00:00:00 RAMON LOPEZ
02050130 2008-03-13 00:00:00 JOSE LUIS SANZ


Lo que necesito es que la SQL me devuelva solamente la fila más reciente, o
sea:

0 2008-05-12 00:00:00 PEPE GOMEZ
02050130 2008-04-02 00:00:00 RAMON LOPEZ


¿Alguien me puede ayudar?



Respuesta Responder a este mensaje
#2 Baldor
17/11/2008 - 13:07 | Informe spam
Hola, Ricardo, gracias por contestar.

Desgraciadamente, tu propuesta no devolvería ninguna fila. La fecha máxima
de la tabla Albaranes, puede ser por ejemplo el dia de hoy, con lo que si
ves los datos del ejemplo que indique, veras que las fechas de las filas que
deberia devolver:

0 2008-05-12 00:00:00 PEPE GOMEZ
02050130 2008-04-02 00:00:00 RAMON LOPEZ

no coinciden con la fecha de hoy, con lo que no estarian en el conjunto
de filas devuelto por la SQL.




"Ricardo Junquera" escribió en
el mensaje news:
Hola
Puedes intentar obtener la fecha mas reciente e incluirlo en tu select,
algo
así


select TBLAlbaranesDetalles.id_articulo, TBLAlbaranes.fechaAlbaran,
TBLAlbaranes.nombreCliente
from TBLAlbaranesDetalles INNER JOIN TBLAlbaranes
ON TBLAlbaranesDetalles.id_albaran=TBLAlbaranes.id_albaran
where TBLAlbaranesDetalles.id_articulo IN
('0','0201095J','02050124','02050130')



AND TBLAlbaranes.fechaAlbaran=(SELECT MAX(fechaAlbaran) FROM TBLAlbaranes)

order by TBLAlbaranes.fechaAlbaran DESC





Ricardo Junquera
Consultor Business Intelligence

BG&S Online Consultores
Ganadora del Premio Microsoft Business Awards 2008.
Partner de Soluciones : Satisfacción de Cliente.



"Baldor" wrote:

Hola grupo, necesito ayuda con una SQL que no consigo hacer:

Tengo lo siguiente:

select TBLAlbaranesDetalles.id_articulo, TBLAlbaranes.fechaAlbaran,
TBLAlbaranes.nombreCliente
from TBLAlbaranesDetalles INNER JOIN TBLAlbaranes
ON TBLAlbaranesDetalles.id_albaran=TBLAlbaranes.id_albaran
where TBLAlbaranesDetalles.id_articulo IN
('0','0201095J','02050124','02050130')
order by TBLAlbaranes.fechaAlbaran DESC


Esto me podría devolver algo asi como:

0 2008-05-12 00:00:00 PEPE GOMEZ
0 2008-04-09 00:00:00 PEDRO GARCIA
0 2008-04-07 00:00:00 PEDRO GARCIA
02050130 2008-04-02 00:00:00 RAMON LOPEZ
02050130 2008-03-13 00:00:00 JOSE LUIS SANZ


Lo que necesito es que la SQL me devuelva solamente la fila más reciente,
o
sea:

0 2008-05-12 00:00:00 PEPE GOMEZ
02050130 2008-04-02 00:00:00 RAMON LOPEZ


¿Alguien me puede ayudar?



Respuesta Responder a este mensaje
#3 Carlos M. Calvelo
17/11/2008 - 13:29 | Informe spam
Hola Baldor,

On 17 nov, 13:07, "Baldor" wrote:
Hola, Ricardo, gracias por contestar.

Desgraciadamente, tu propuesta no devolvería ninguna fila. La fecha máxima
de la tabla Albaranes, puede ser por ejemplo el dia de hoy, con lo que si
ves los datos del ejemplo que indique, veras que las fechas de las filas que
deberia devolver:

    0                   2008-05-12 00:00:00    PEPE GOMEZ
    02050130     2008-04-02 00:00:00    RAMON LOPEZ

   no coinciden con la fecha de hoy, con lo que no estarian en el conjunto
de filas devuelto por la SQL.




select distinct D.id_articulo, A.fechaAlbaran, A.nombreCliente
from TBLAlbaranes A join TBLAlbaranesDetalles D
on A.id_albaran=D.id_albaran
where D.id_articulo IN ('0','0201095J','02050124','02050130') and
A.fechaAlbaran (select max(A1.fechaAlbaran)
from TBLAlbaranes A1 join TBLAlbaranesDetalles D1
on A1.id_albaranÑ.id_albaran
where D1.id_articulo=D.id_articulo
)

Fíjate que el mismo artículo puede estar con la misma fecha
para distintos clientes. Lo verás entonces mas de una vez.

El distinct es para los casos donde el mismo artículo puede estar
mas veces con la misma fecha y para el mismo cliente.

Saludos,
Carlos
Respuesta Responder a este mensaje
#4 Ricardo Junquera
17/11/2008 - 13:36 | Informe spam
¿Entonces necesitas la fecha más reciente pero por producto ¿no?

Con esto tendrías el fecha más alta de los productos

select TBLAlbaranesDetalles.id_articulo, max(TBLAlbaranes.fechaAlbaran) as
femax,
from TBLAlbaranesDetalles INNER JOIN TBLAlbaranes
ON TBLAlbaranesDetalles.id_albaran=TBLAlbaranes.id_albaran
where TBLAlbaranesDetalles.id_articulo IN
('0','0201095J','02050124','02050130')
groub by TBLAlbaranesDetalles.id_articulo


0 2008-05-12 00:00:00
02050130 2008-04-02 00:00:00




Tendrías que enlazarlo con lo anterior



select TBLAlbaranesDetalles.id_articulo, TBLAlbaranes.fechaAlbaran,
>> TBLAlbaranes.nombreCliente
>> from TBLAlbaranesDetalles INNER JOIN TBLAlbaranes
>> ON TBLAlbaranesDetalles.id_albaran=TBLAlbaranes.id_albaran



inner join (select TBLAlbaranesDetalles.id_articulo,
max(TBLAlbaranes.fechaAlbaran),
from TBLAlbaranesDetalles INNER JOIN TBLAlbaranes
ON TBLAlbaranesDetalles.id_albaran=TBLAlbaranes.id_albaran
where TBLAlbaranesDetalles.id_articulo IN
('0','0201095J','02050124','02050130')
groub by TBLAlbaranesDetalles.id_articulo) S

on TBLAlbaranesDetalles.id_albaran=s.id_albaran and
TBLAlbaranes.fechaAlbaran=s.femax
where TBLAlbaranesDetalles.id_articulo IN
('0','0201095J','02050124','02050130')


No se si es la forma más optima pero algo así te puede valer



Ricardo Junquera
Consultor Business Intelligence

BG&S Online Consultores
Ganadora del Premio Microsoft Business Awards 2008.
Partner de Soluciones : Satisfacción de Cliente.



"Baldor" wrote:

Hola, Ricardo, gracias por contestar.

Desgraciadamente, tu propuesta no devolvería ninguna fila. La fecha máxima
de la tabla Albaranes, puede ser por ejemplo el dia de hoy, con lo que si
ves los datos del ejemplo que indique, veras que las fechas de las filas que
deberia devolver:

0 2008-05-12 00:00:00 PEPE GOMEZ
02050130 2008-04-02 00:00:00 RAMON LOPEZ

no coinciden con la fecha de hoy, con lo que no estarian en el conjunto
de filas devuelto por la SQL.




"Ricardo Junquera" escribió en
el mensaje news:
> Hola
> Puedes intentar obtener la fecha mas reciente e incluirlo en tu select,
> algo
> así
>
>
>> select TBLAlbaranesDetalles.id_articulo, TBLAlbaranes.fechaAlbaran,
>> TBLAlbaranes.nombreCliente
>> from TBLAlbaranesDetalles INNER JOIN TBLAlbaranes
>> ON TBLAlbaranesDetalles.id_albaran=TBLAlbaranes.id_albaran
>> where TBLAlbaranesDetalles.id_articulo IN
>> ('0','0201095J','02050124','02050130')
>
> AND TBLAlbaranes.fechaAlbaran=(SELECT MAX(fechaAlbaran) FROM TBLAlbaranes)
>
>> order by TBLAlbaranes.fechaAlbaran DESC
>
>
>
> Ricardo Junquera
> Consultor Business Intelligence
>
> BG&S Online Consultores
> Ganadora del Premio Microsoft Business Awards 2008.
> Partner de Soluciones : Satisfacción de Cliente.
>
>
>
> "Baldor" wrote:
>
>> Hola grupo, necesito ayuda con una SQL que no consigo hacer:
>>
>> Tengo lo siguiente:
>>
>> select TBLAlbaranesDetalles.id_articulo, TBLAlbaranes.fechaAlbaran,
>> TBLAlbaranes.nombreCliente
>> from TBLAlbaranesDetalles INNER JOIN TBLAlbaranes
>> ON TBLAlbaranesDetalles.id_albaran=TBLAlbaranes.id_albaran
>> where TBLAlbaranesDetalles.id_articulo IN
>> ('0','0201095J','02050124','02050130')
>> order by TBLAlbaranes.fechaAlbaran DESC
>>
>>
>> Esto me podría devolver algo asi como:
>>
>> 0 2008-05-12 00:00:00 PEPE GOMEZ
>> 0 2008-04-09 00:00:00 PEDRO GARCIA
>> 0 2008-04-07 00:00:00 PEDRO GARCIA
>> 02050130 2008-04-02 00:00:00 RAMON LOPEZ
>> 02050130 2008-03-13 00:00:00 JOSE LUIS SANZ
>>
>>
>> Lo que necesito es que la SQL me devuelva solamente la fila más reciente,
>> o
>> sea:
>>
>> 0 2008-05-12 00:00:00 PEPE GOMEZ
>> 02050130 2008-04-02 00:00:00 RAMON LOPEZ
>>
>>
>> ¿Alguien me puede ayudar?
>>
>>
>>



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