SQL - muy urgente:consulta SQL

 
Vista:

muy urgente:consulta SQL

Publicado por montse (8 intervenciones) el 20/05/2003 12:58:50
Hola a todos,

necesito hacer una consulta de lo siguiente.

Tengo las siguientes tablas

Obras
con el campo idobra

Maquinaria
con el campo idmaquina

Albaranes
con los campos idalbaran,idobra,fecha

Lineaalbara
con los campos idalbaran,tipo,idarticulo

tipo sera igual a MAQ si es una maquina
y idarticulo seria el idmaquina para el caso de las maquinas

Yo necesito saber en que obra esta cada maquina, teniendo en cuenta que eso se verá reflejado en el ultimo albaran donde se encuentre esa maquina, ya que cada vez que haya un movimiento de la maquina se hara un albaran.

Estaria muy agradecida si alguien me pudiera ayudar
Me urge.

Muchas gracias
Montse
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:muy urgente:consulta SQL

Publicado por Jerry (15 intervenciones) el 21/05/2003 23:44:37
Hola Montse...

creo que el query que buscas seria el siguiente:

SELECT A.NOMBRE AS MAQUINA, B.FechaMax as [Fecha Ultimo Mov.], D.Nombre as [Obra Actual]
FROM ##MAQUINARIA AS A
LEFT OUTER JOIN
(
SELECT C.IdArticulo, C.FechaMax, MAX(A.IdAlbaran) as MAXIDAlbaran
FROM ##ALBARANES AS A INNER JOIN ##LineaAlbara AS B ON (B.IdAlbaran = A.IdAlbaran)
INNER JOIN (
SELECT B.IdArticulo, MAX(A.Fecha) as FechaMax
FROM ##ALBARANES AS A INNER JOIN ##LineaAlbara AS B ON (B.IdAlbaran = A.IdAlbaran)
WHERE B.Tipo = 'MAQ'
GROUP BY B.IdArticulo
) AS C ON (C.IdArticulo = B.IdArticulo AND C.FechaMax = A.Fecha)
WHERE B.Tipo = 'MAQ'
GROUP BY C.IdArticulo, C.FechaMax
) AS B ON (B.IdArticulo = A.IdMaquina)
LEFT OUTER JOIN (
##ALBARANES AS C INNER JOIN ##OBRAS AS D ON (D.IdObra = C.IdObra)
) ON (C.IdAlbaran = B.MAXIDAlbaran)

Lo primero que se hace, es encontrar, para cada articulo de tipo 'MAQ', encontrar cual fue la fecha maxima de el último movimiento. Una vez que encuentras esa fecha, considerando la posibilidad de que en esa fecha maxima, se pudieron haber dado varios movimientos para un solo articulo, buscamos el maximo IdAlbaran para cada IdArticulo que tenga la fecha maxima encontrada previamente. Una vez encontrado el maximo IdAlbaran, solo tenemos que ligar tablas para obtener el nombre de la maquina y el nombre de la Obra en la que se encuentra.

Espero que te sirva.
Saludos

-Jerry-
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