URGENTE: no se hacerlo

11/09/2003 - 17:38 por fjmasero | Informe spam
Wenas:

Estoy desarrollando, + bien parcheando, una aplicacion en
la q tengo q mostrar los datos de una vista ya hecha, no
por mi, y q no puedo modificar. Tampoco puedo tocar las
tablas implicadas.

Dicha vista es

SELECT dbo.Producto.IDProducto, dbo.Producto.Descripcion,
dbo.TemporalDetalle.IDCliente,
dbo.TemporalDetalle.IdPedidoTmp, dbo.Regalos.Condicion,
dbo.TemporalDetalle.IDDetalle,
dbo.TemporalDetalle.Unidades AS UnidadesPedido,
Producto_1.Descripcion AS DescripcionProductoRegalo,
Producto_1.IDProducto AS IdProductoRegalo
FROM dbo.Articulos INNER JOIN
dbo.Regalos ON dbo.Articulos.IDArticulo =
dbo.Regalos.IDArticuloAsociado INNER JOIN
dbo.Producto ON dbo.Regalos.IDProducto =
dbo.Producto.IDProducto INNER JOIN
dbo.Articulos Articulos_1 ON dbo.Producto.IDProducto
= Articulos_1.IDProducto INNER JOIN
dbo.TemporalDetalle ON Articulos_1.IDArticulo =
dbo.TemporalDetalle.IDArticulo INNER JOIN
dbo.Producto Producto_1 ON dbo.Articulos.IDProducto
= Producto_1.IDProducto
WHERE (dbo.Producto.TipoRegalo = 'D') AND
(dbo.Producto.Estado = 'A') AND (dbo.Producto.Regalo = 1)


La estructura, resumida, es q hay productos (tabla
Producto), con/sin regalo, y "dentro" de cada producto,
hay articulos (tabla Articulos).

En TemporalDetalle hay articulos, que "pertenecen" a un
producto, y este puede tener regalo.

Dichos regalos son también articulos, q estarán en
Articulos, y que se relacionan mediante la tabla Regalos.

La vista devuelve los regalos asociados a cada articulo q
haya en TemporalDetalle, es decir, el regalo asociado al
producto al q pertenece cada articulo.

El problema es q si hay articulos del mismo producto, el
cual tiene regalo, me devuelve una tupla por cada
articulo, es decir, duplica los regalos por cada
producto, y lo q pretendo es q devuelva una sola.

¿Se os ocurre algo?.

Se q es lioso, pero espero haberme explicado. Si no,
preguntar.

Salu2 y gracias.

Preguntas similare

Leer las respuestas

#1 Mariano Alvarez
11/09/2003 - 18:04 | Informe spam
Podrias indicar las cardinalidades de las relaciones, las PK de cada tabla y
que contiene cada tabla.

Por ejemplo fijate los comentarios

FROM dbo.Articulos
INNER JOIN dbo.Regalos
ON dbo.Articulos.IDArticulo = dbo.Regalos.IDArticuloAsociado
INNER JOIN dbo.Producto
ON dbo.Regalos.IDProducto = dbo.Producto.IDProducto
INNER JOIN dbo.Articulos Articulos_1 --
Que hay en esta tabla?
ON dbo.Producto.IDProducto = Articulos_1.IDProducto
INNER JOIN dbo.TemporalDetalle
ON Articulos_1.IDArticulo = dbo.TemporalDetalle.IDArticulo
INNER JOIN dbo.Producto Producto_1 -- Que
hay en esta tabla?
ON dbo.Articulos.IDProducto = Producto_1.IDProducto


Tu dices, "En TemporalDetalle hay articulos, que "pertenecen" a un producto,
y este puede tener regalo" luego dices "Dichos regalos son también
articulos, q estarán en Articulos, y que se relacionan mediante la tabla
Regalos". No es algo contradictorio, el producto o el articulo es el del
regalo?

Igualmente por tus comentarios supongo que deberias armar una tabla derivada
en un subquery tipo

select .
from
(
Select
from ...
group by ...
) tabla_sin repetidos
inner join ...
where .


Jose Mariano Alvarez
Comunidad de base de datos
Grupo de Usuarios Microsoft
www.mug.org.ar



"fjmasero" wrote in message
news:190b01c3787a$bb3a01b0$
Wenas:

Estoy desarrollando, + bien parcheando, una aplicacion en
la q tengo q mostrar los datos de una vista ya hecha, no
por mi, y q no puedo modificar. Tampoco puedo tocar las
tablas implicadas.

Dicha vista es

SELECT dbo.Producto.IDProducto, dbo.Producto.Descripcion,
dbo.TemporalDetalle.IDCliente,
dbo.TemporalDetalle.IdPedidoTmp, dbo.Regalos.Condicion,
dbo.TemporalDetalle.IDDetalle,
dbo.TemporalDetalle.Unidades AS UnidadesPedido,
Producto_1.Descripcion AS DescripcionProductoRegalo,
Producto_1.IDProducto AS IdProductoRegalo
FROM dbo.Articulos INNER JOIN
dbo.Regalos ON dbo.Articulos.IDArticulo dbo.Regalos.IDArticuloAsociado INNER JOIN
dbo.Producto ON dbo.Regalos.IDProducto dbo.Producto.IDProducto INNER JOIN
dbo.Articulos Articulos_1 ON dbo.Producto.IDProducto
= Articulos_1.IDProducto INNER JOIN
dbo.TemporalDetalle ON Articulos_1.IDArticulo dbo.TemporalDetalle.IDArticulo INNER JOIN
dbo.Producto Producto_1 ON dbo.Articulos.IDProducto
= Producto_1.IDProducto
WHERE (dbo.Producto.TipoRegalo = 'D') AND
(dbo.Producto.Estado = 'A') AND (dbo.Producto.Regalo = 1)


La estructura, resumida, es q hay productos (tabla
Producto), con/sin regalo, y "dentro" de cada producto,
hay articulos (tabla Articulos).

En TemporalDetalle hay articulos, que "pertenecen" a un
producto, y este puede tener regalo.

Dichos regalos son también articulos, q estarán en
Articulos, y que se relacionan mediante la tabla Regalos.

La vista devuelve los regalos asociados a cada articulo q
haya en TemporalDetalle, es decir, el regalo asociado al
producto al q pertenece cada articulo.

El problema es q si hay articulos del mismo producto, el
cual tiene regalo, me devuelve una tupla por cada
articulo, es decir, duplica los regalos por cada
producto, y lo q pretendo es q devuelva una sola.

¿Se os ocurre algo?.

Se q es lioso, pero espero haberme explicado. Si no,
preguntar.

Salu2 y gracias.
Respuesta Responder a este mensaje
#2 fjmasero
12/09/2003 - 09:05 | Informe spam
Hola Mariano:

Gracias por responder.

Malas noticias: Como decía, estoy usando una base de
datos no hecha por mi, hecha hace ya algún tiempo, usada
por varias aplicaciones, y no tiene FK ni na' de na'. Es
un desastre, pero es lo q hay.

Por otro lado, cuando preguntas ¿q hay en esta tabla?
supongo q te refieres a las llamadas Producto_1 y
Articulos_1.

Pues son las mismas q Producto y Articulos,
respectivamente, "duplicadas" en la vista. Asi es como
esta hecha la vista.

Sobre lo de regalos, pues si, es contradictorio, pero
como antes, es lo q hay.

Si puedes ayudarme, gracias, y si no, también gracias.

Salu2

Podrias indicar las cardinalidades de las relaciones,


las PK de cada tabla y
que contiene cada tabla.

Por ejemplo fijate los comentarios

FROM dbo.Articulos
INNER JOIN dbo.Regalos
ON dbo.Articulos.IDArticulo =


dbo.Regalos.IDArticuloAsociado
INNER JOIN dbo.Producto
ON dbo.Regalos.IDProducto = dbo.Producto.IDProducto
INNER JOIN dbo.Articulos


Articulos_1 --
Que hay en esta tabla?
ON dbo.Producto.IDProducto = Articulos_1.IDProducto
INNER JOIN dbo.TemporalDetalle
ON Articulos_1.IDArticulo =


dbo.TemporalDetalle.IDArticulo
INNER JOIN dbo.Producto


Producto_1 -- Que
hay en esta tabla?
ON dbo.Articulos.IDProducto = Producto_1.IDProducto


Tu dices, "En TemporalDetalle hay articulos,


que "pertenecen" a un producto,
y este puede tener regalo" luego dices "Dichos regalos


son también
articulos, q estarán en Articulos, y que se relacionan


mediante la tabla
Regalos". No es algo contradictorio, el producto o el


articulo es el del
regalo?

Igualmente por tus comentarios supongo que deberias


armar una tabla derivada
en un subquery tipo

select .
from
(
Select
from ...
group by ...
) tabla_sin repetidos
inner join ...
where .


Jose Mariano Alvarez
Comunidad de base de datos
Grupo de Usuarios Microsoft
www.mug.org.ar



"fjmasero" wrote in message
news:190b01c3787a$bb3a01b0$
Wenas:

Estoy desarrollando, + bien parcheando, una aplicacion en
la q tengo q mostrar los datos de una vista ya hecha, no
por mi, y q no puedo modificar. Tampoco puedo tocar las
tablas implicadas.

Dicha vista es

SELECT dbo.Producto.IDProducto, dbo.Producto.Descripcion,
dbo.TemporalDetalle.IDCliente,
dbo.TemporalDetalle.IdPedidoTmp, dbo.Regalos.Condicion,
dbo.TemporalDetalle.IDDetalle,
dbo.TemporalDetalle.Unidades AS UnidadesPedido,
Producto_1.Descripcion AS DescripcionProductoRegalo,
Producto_1.IDProducto AS IdProductoRegalo
FROM dbo.Articulos INNER JOIN
dbo.Regalos ON dbo.Articulos.IDArticulo >dbo.Regalos.IDArticuloAsociado INNER JOIN
dbo.Producto ON dbo.Regalos.IDProducto >dbo.Producto.IDProducto INNER JOIN
dbo.Articulos Articulos_1 ON dbo.Producto.IDProducto
= Articulos_1.IDProducto INNER JOIN
dbo.TemporalDetalle ON Articulos_1.IDArticulo >dbo.TemporalDetalle.IDArticulo INNER JOIN
dbo.Producto Producto_1 ON dbo.Articulos.IDProducto
= Producto_1.IDProducto
WHERE (dbo.Producto.TipoRegalo = 'D') AND
(dbo.Producto.Estado = 'A') AND (dbo.Producto.Regalo = 1)


La estructura, resumida, es q hay productos (tabla
Producto), con/sin regalo, y "dentro" de cada producto,
hay articulos (tabla Articulos).

En TemporalDetalle hay articulos, que "pertenecen" a un
producto, y este puede tener regalo.

Dichos regalos son también articulos, q estarán en
Articulos, y que se relacionan mediante la tabla Regalos.

La vista devuelve los regalos asociados a cada articulo q
haya en TemporalDetalle, es decir, el regalo asociado al
producto al q pertenece cada articulo.

El problema es q si hay articulos del mismo producto, el
cual tiene regalo, me devuelve una tupla por cada
articulo, es decir, duplica los regalos por cada
producto, y lo q pretendo es q devuelva una sola.

¿Se os ocurre algo?.

Se q es lioso, pero espero haberme explicado. Si no,
preguntar.

Salu2 y gracias.


.

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