relacion externa con un solo elemento

19/10/2006 - 13:15 por Mendez | Informe spam
Buenas gente!

Mi problema es:

Tengo una base de datos de articulos
donde el articulo tiene indices por codigo de producto y
por fecha de entrada

El problema viene de que necesito hacer una consulta relacionada con
otra tabla de reclamaciones, pero no al relacionarla me saca tantas
filas como articulos tenga y solo necesito un registro por cada articulo.

Lo logico seria hacer un WHERE con la fecha del producto, pero no es
posible porque son productos de distintas fechas, tengo que sacar un
listado de todos los productos.

Pregunta: ¿Es posible hacer algun tipo de relacion externa (INNER JOIN,
LEFT OUTER JOIN,) restringiendo a solo el primer elemento que
encuentre para que no saque todos los registros?

Gracias a todos!

Preguntas similare

Leer las respuestas

#1 Carlos Sacristán
19/10/2006 - 13:42 | Informe spam
Si posteas la DDL de las tablas implicadas te podremos ayudar mejor


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

"Mendez" escribió en el mensaje
news:eOdD9%
Buenas gente!

Mi problema es:

Tengo una base de datos de articulos
donde el articulo tiene indices por codigo de producto y
por fecha de entrada

El problema viene de que necesito hacer una consulta relacionada con otra
tabla de reclamaciones, pero no al relacionarla me saca tantas filas como
articulos tenga y solo necesito un registro por cada articulo.

Lo logico seria hacer un WHERE con la fecha del producto, pero no es
posible porque son productos de distintas fechas, tengo que sacar un
listado de todos los productos.

Pregunta: ¿Es posible hacer algun tipo de relacion externa (INNER JOIN,
LEFT OUTER JOIN,) restringiendo a solo el primer elemento que
encuentre para que no saque todos los registros?

Gracias a todos!
Respuesta Responder a este mensaje
#2 Javier Loria
19/10/2006 - 15:17 | Informe spam
Hola:
Vamos por partes, el siguiente SELECT te devuelve la ultima fecha de
entrada de un producto:
SELECT Codigo, MAX(Fecha) FROM Productos GROUP BY Codigo
Entonces para hacer la union con reclamaciones deberias:
== SELECT
FROM Reclamaciones
JOIN (SELECT Codigo, MAX(Fecha) AS Fecha
FROM Productos
GROUP BY Codigo) AS UltimaEntrada
ON Reclamaciones.Codigo=UltimaEntrada.Codigo
== Si necesitas otros atributos de la tabla Productos puedes hacer:
== SELECT
FROM Reclamaciones
JOIN (SELECT Codigo, MAX(Fecha)
FROM Productos
GROUP BY Codigo) AS UltimaEntrada
ON Reclamaciones.Codigo=UltimaEntrada.Codigo
JOIN Productos
ON Productos.Codigo=UltimaEntrada.Codigo
AND Productos.Fecha=UltimaEntrada.Fecha
== Saludos


Javier Loria
Costa Rica-MVP
Solid Quality Learning

"Mendez" wrote in message
news:eOdD9%
Buenas gente!

Mi problema es:

Tengo una base de datos de articulos
donde el articulo tiene indices por codigo de producto y
por fecha de entrada

El problema viene de que necesito hacer una consulta relacionada con otra
tabla de reclamaciones, pero no al relacionarla me saca tantas filas como
articulos tenga y solo necesito un registro por cada articulo.

Lo logico seria hacer un WHERE con la fecha del producto, pero no es
posible porque son productos de distintas fechas, tengo que sacar un
listado de todos los productos.

Pregunta: ¿Es posible hacer algun tipo de relacion externa (INNER JOIN,
LEFT OUTER JOIN,) restringiendo a solo el primer elemento que
encuentre para que no saque todos los registros?

Gracias a todos!
Respuesta Responder a este mensaje
#3 Mendez
20/10/2006 - 10:03 | Informe spam
Muchas gracias, esa es la solucion que necesitaba!

Una maquina, si señor!

Javier Loria escribió:
Hola:
Vamos por partes, el siguiente SELECT te devuelve la ultima fecha de
entrada de un producto:
> SELECT Codigo, MAX(Fecha) FROM Productos GROUP BY Codigo
> Entonces para hacer la union con reclamaciones deberias:
==> SELECT
FROM Reclamaciones
JOIN (SELECT Codigo, MAX(Fecha) AS Fecha
FROM Productos
GROUP BY Codigo) AS UltimaEntrada
ON Reclamaciones.Codigo=UltimaEntrada.Codigo
==> Si necesitas otros atributos de la tabla Productos puedes hacer:
==> SELECT
FROM Reclamaciones
JOIN (SELECT Codigo, MAX(Fecha)
FROM Productos
GROUP BY Codigo) AS UltimaEntrada
ON Reclamaciones.Codigo=UltimaEntrada.Codigo
JOIN Productos
ON Productos.Codigo=UltimaEntrada.Codigo
AND Productos.Fecha=UltimaEntrada.Fecha
==> Saludos



Javier Loria
Costa Rica-MVP
Solid Quality Learning

"Mendez" wrote in message
news:eOdD9%
Buenas gente!

Mi problema es:

Tengo una base de datos de articulos
donde el articulo tiene indices por codigo de producto y
por fecha de entrada

El problema viene de que necesito hacer una consulta relacionada con otra
tabla de reclamaciones, pero no al relacionarla me saca tantas filas como
articulos tenga y solo necesito un registro por cada articulo.

Lo logico seria hacer un WHERE con la fecha del producto, pero no es
posible porque son productos de distintas fechas, tengo que sacar un
listado de todos los productos.

Pregunta: ¿Es posible hacer algun tipo de relacion externa (INNER JOIN,
LEFT OUTER JOIN,) restringiendo a solo el primer elemento que
encuentre para que no saque todos los registros?

Gracias a todos!




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