Una ayuda por favor..

15/11/2006 - 19:22 por Eru | Informe spam
hola a todos y les agradezco por su atrecion y la ayuda que puedan brindarme..

Tengo una vista en la cual hago varios joins, el caso es que llega un
momento en cual duplica datos ya que tengo una tabla A que cruzo con la tabla
B pero la tabla A tiene 3 registro y la B tiene 2 registros entonces como
rsultado me muestra 6 registro, cuando solo debe de mostrarme 3 registros que
son los registros de la Tabla A, como puedo hacer para que solo me muestren
los registros de la tabla B

gracias por todo
saludos

Eru -.-"

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
15/11/2006 - 19:46 | Informe spam
Eru,

Postea la estructura de las tablas, data de ejemplo y resultados esperados.
Ayudanos para poder ayudarte.


AMB

"Eru" wrote:

hola a todos y les agradezco por su atrecion y la ayuda que puedan brindarme..

Tengo una vista en la cual hago varios joins, el caso es que llega un
momento en cual duplica datos ya que tengo una tabla A que cruzo con la tabla
B pero la tabla A tiene 3 registro y la B tiene 2 registros entonces como
rsultado me muestra 6 registro, cuando solo debe de mostrarme 3 registros que
son los registros de la Tabla A, como puedo hacer para que solo me muestren
los registros de la tabla B

gracias por todo
saludos

Eru -.-"
Respuesta Responder a este mensaje
#2 Eru
15/11/2006 - 20:54 | Informe spam
La tabla A es un detalle y la B guarda las dioferentes formas de pago de un
movimiento de venta (n combinaciones), es decir pago en efectivo con tarjeta,
etcal hacer este select muestra esto


select A.*
from vta_movimiento_detalle as A
inner join vta_movimiento_frmpago as B
on A.cod_movimiento = B.cod_mov
where A.cod_movimiento = '0000000006'


0000000006 02 CR5003424 01 03 008
0000000006 02 CR5003424 01 03 008
0000000006 02 CR5003424 01 03 030
0000000006 02 CR5003424 01 03 030


Si ves me esta duplicando y esto es xq en la Tabla A muestra 2 registros :

0000000006 02 CR5003424 01 03 008
0000000006 02 CR5003424 01 03 030

Y en la Tabla B tambien muestra 2 registros xq hubieron dos formas de pago
para el mismo movimiento:

0000000006 02 1 EFECTIVO
0000000006 02 2 VISA

Entonces el producto de estos resgistros dan 4 registros,Lo que deseo saber
es
como eliminar este duplicado

Las estructuras son :

Tabla : vta_movimiento_detalle

cod_movimiento char no 10
cod_alm char no 2
pro_cod nvarchar no 40
prt_cod int no 4
cod_tpomodelo char no 2
cod_talla char no 2
cod_color char no 3
cantidad int no 4
precio real no 4
igv real no 4
ofe_flg tinyint no 1
descuento decimal no 9
dev_flg int no 4

Tabla vta_movimiento_frmpago :

cod_mov char no 10
cod_alm char no 2
cod_frm_pag char no 2
rel_inf char no 50
mon_pag real no 4
mon_tot real no 4
tip_mon char no 1




"Alejandro Mesa" wrote:

Eru,

Postea la estructura de las tablas, data de ejemplo y resultados esperados.
Ayudanos para poder ayudarte.


AMB

"Eru" wrote:

> hola a todos y les agradezco por su atrecion y la ayuda que puedan brindarme..
>
> Tengo una vista en la cual hago varios joins, el caso es que llega un
> momento en cual duplica datos ya que tengo una tabla A que cruzo con la tabla
> B pero la tabla A tiene 3 registro y la B tiene 2 registros entonces como
> rsultado me muestra 6 registro, cuando solo debe de mostrarme 3 registros que
> son los registros de la Tabla A, como puedo hacer para que solo me muestren
> los registros de la tabla B
>
> gracias por todo
> saludos
>
> Eru -.-"
Respuesta Responder a este mensaje
#3 Alejandro Mesa
15/11/2006 - 21:54 | Informe spam
Eru,

Si solamente vas a seleccionar data de la table [vta_movimiento_detalle],
entonces puedes usar "distinct" en la sentencia "select" o usar el operador
"exists" para chequear existencia de algun pago.

select a.*
from dbo.[vta_movimiento_detalle] as a
where exists (
select *
from dbo.[vta_movimiento_frmpago] as b
where b.cod_mov = a.cod_movimiento
)
go


AMB

"Eru" wrote:

La tabla A es un detalle y la B guarda las dioferentes formas de pago de un
movimiento de venta (n combinaciones), es decir pago en efectivo con tarjeta,
etcal hacer este select muestra esto


select A.*
from vta_movimiento_detalle as A
inner join vta_movimiento_frmpago as B
on A.cod_movimiento = B.cod_mov
where A.cod_movimiento = '0000000006'


0000000006 02 CR5003424 01 03 008
0000000006 02 CR5003424 01 03 008
0000000006 02 CR5003424 01 03 030
0000000006 02 CR5003424 01 03 030


Si ves me esta duplicando y esto es xq en la Tabla A muestra 2 registros :

0000000006 02 CR5003424 01 03 008
0000000006 02 CR5003424 01 03 030

Y en la Tabla B tambien muestra 2 registros xq hubieron dos formas de pago
para el mismo movimiento:

0000000006 02 1 EFECTIVO
0000000006 02 2 VISA

Entonces el producto de estos resgistros dan 4 registros,Lo que deseo saber
es
como eliminar este duplicado

Las estructuras son :

Tabla : vta_movimiento_detalle

cod_movimiento char no 10
cod_alm char no 2
pro_cod nvarchar no 40
prt_cod int no 4
cod_tpomodelo char no 2
cod_talla char no 2
cod_color char no 3
cantidad int no 4
precio real no 4
igv real no 4
ofe_flg tinyint no 1
descuento decimal no 9
dev_flg int no 4

Tabla vta_movimiento_frmpago :

cod_mov char no 10
cod_alm char no 2
cod_frm_pag char no 2
rel_inf char no 50
mon_pag real no 4
mon_tot real no 4
tip_mon char no 1




"Alejandro Mesa" wrote:

> Eru,
>
> Postea la estructura de las tablas, data de ejemplo y resultados esperados.
> Ayudanos para poder ayudarte.
>
>
> AMB
>
> "Eru" wrote:
>
> > hola a todos y les agradezco por su atrecion y la ayuda que puedan brindarme..
> >
> > Tengo una vista en la cual hago varios joins, el caso es que llega un
> > momento en cual duplica datos ya que tengo una tabla A que cruzo con la tabla
> > B pero la tabla A tiene 3 registro y la B tiene 2 registros entonces como
> > rsultado me muestra 6 registro, cuando solo debe de mostrarme 3 registros que
> > son los registros de la Tabla A, como puedo hacer para que solo me muestren
> > los registros de la tabla B
> >
> > gracias por todo
> > saludos
> >
> > Eru -.-"
Respuesta Responder a este mensaje
#4 Eru
15/11/2006 - 22:10 | Informe spam
Gracias Alejandro, pero en realidad debo de jalar datos de ambas tablas y
este join va unido con una serie de tablas y vistas mas de donde jalo mas
datos y hago una serie de calculos ; como podria hacer para que no se me
presente este problema.


P.D . ya me percate que el resto de tablas no dupliquen registros el
problema radica en este join

"Alejandro Mesa" wrote:

Eru,

Si solamente vas a seleccionar data de la table [vta_movimiento_detalle],
entonces puedes usar "distinct" en la sentencia "select" o usar el operador
"exists" para chequear existencia de algun pago.

select a.*
from dbo.[vta_movimiento_detalle] as a
where exists (
select *
from dbo.[vta_movimiento_frmpago] as b
where b.cod_mov = a.cod_movimiento
)
go


AMB

"Eru" wrote:

> La tabla A es un detalle y la B guarda las dioferentes formas de pago de un
> movimiento de venta (n combinaciones), es decir pago en efectivo con tarjeta,
> etcal hacer este select muestra esto
>
>
> select A.*
> from vta_movimiento_detalle as A
> inner join vta_movimiento_frmpago as B
> on A.cod_movimiento = B.cod_mov
> where A.cod_movimiento = '0000000006'
>
>
> 0000000006 02 CR5003424 01 03 008
> 0000000006 02 CR5003424 01 03 008
> 0000000006 02 CR5003424 01 03 030
> 0000000006 02 CR5003424 01 03 030
>
>
> Si ves me esta duplicando y esto es xq en la Tabla A muestra 2 registros :
>
> 0000000006 02 CR5003424 01 03 008
> 0000000006 02 CR5003424 01 03 030
>
> Y en la Tabla B tambien muestra 2 registros xq hubieron dos formas de pago
> para el mismo movimiento:
>
> 0000000006 02 1 EFECTIVO
> 0000000006 02 2 VISA
>
> Entonces el producto de estos resgistros dan 4 registros,Lo que deseo saber
> es
> como eliminar este duplicado
>
> Las estructuras son :
>
> Tabla : vta_movimiento_detalle
>
> cod_movimiento char no 10
> cod_alm char no 2
> pro_cod nvarchar no 40
> prt_cod int no 4
> cod_tpomodelo char no 2
> cod_talla char no 2
> cod_color char no 3
> cantidad int no 4
> precio real no 4
> igv real no 4
> ofe_flg tinyint no 1
> descuento decimal no 9
> dev_flg int no 4
>
> Tabla vta_movimiento_frmpago :
>
> cod_mov char no 10
> cod_alm char no 2
> cod_frm_pag char no 2
> rel_inf char no 50
> mon_pag real no 4
> mon_tot real no 4
> tip_mon char no 1
>
>
>
>
> "Alejandro Mesa" wrote:
>
> > Eru,
> >
> > Postea la estructura de las tablas, data de ejemplo y resultados esperados.
> > Ayudanos para poder ayudarte.
> >
> >
> > AMB
> >
> > "Eru" wrote:
> >
> > > hola a todos y les agradezco por su atrecion y la ayuda que puedan brindarme..
> > >
> > > Tengo una vista en la cual hago varios joins, el caso es que llega un
> > > momento en cual duplica datos ya que tengo una tabla A que cruzo con la tabla
> > > B pero la tabla A tiene 3 registro y la B tiene 2 registros entonces como
> > > rsultado me muestra 6 registro, cuando solo debe de mostrarme 3 registros que
> > > son los registros de la Tabla A, como puedo hacer para que solo me muestren
> > > los registros de la tabla B
> > >
> > > gracias por todo
> > > saludos
> > >
> > > Eru -.-"
Respuesta Responder a este mensaje
#5 Alejandro Mesa
15/11/2006 - 22:16 | Informe spam
Eru,

No se porque dices que duplica. En realidad cada fila de la tabla
[vta_movimiento_detalle] se une con las filas que existan en la tabla
[vta_movimiento_frmpago] siempre y cuando se cumpla la condicion de union.
Ese es el resultado esperado de esta sentencia. Por que no expones lo que
deseas mediante un ejemplo concreto, sin obviar nada?

Si deseas mostrar mada movimiento con sus pagos, entonces el resultado es
correcto. No es eso lo que quieres?

AMB

"Eru" wrote:

Gracias Alejandro, pero en realidad debo de jalar datos de ambas tablas y
este join va unido con una serie de tablas y vistas mas de donde jalo mas
datos y hago una serie de calculos ; como podria hacer para que no se me
presente este problema.


P.D . ya me percate que el resto de tablas no dupliquen registros el
problema radica en este join

"Alejandro Mesa" wrote:

> Eru,
>
> Si solamente vas a seleccionar data de la table [vta_movimiento_detalle],
> entonces puedes usar "distinct" en la sentencia "select" o usar el operador
> "exists" para chequear existencia de algun pago.
>
> select a.*
> from dbo.[vta_movimiento_detalle] as a
> where exists (
> select *
> from dbo.[vta_movimiento_frmpago] as b
> where b.cod_mov = a.cod_movimiento
> )
> go
>
>
> AMB
>
> "Eru" wrote:
>
> > La tabla A es un detalle y la B guarda las dioferentes formas de pago de un
> > movimiento de venta (n combinaciones), es decir pago en efectivo con tarjeta,
> > etcal hacer este select muestra esto
> >
> >
> > select A.*
> > from vta_movimiento_detalle as A
> > inner join vta_movimiento_frmpago as B
> > on A.cod_movimiento = B.cod_mov
> > where A.cod_movimiento = '0000000006'
> >
> >
> > 0000000006 02 CR5003424 01 03 008
> > 0000000006 02 CR5003424 01 03 008
> > 0000000006 02 CR5003424 01 03 030
> > 0000000006 02 CR5003424 01 03 030
> >
> >
> > Si ves me esta duplicando y esto es xq en la Tabla A muestra 2 registros :
> >
> > 0000000006 02 CR5003424 01 03 008
> > 0000000006 02 CR5003424 01 03 030
> >
> > Y en la Tabla B tambien muestra 2 registros xq hubieron dos formas de pago
> > para el mismo movimiento:
> >
> > 0000000006 02 1 EFECTIVO
> > 0000000006 02 2 VISA
> >
> > Entonces el producto de estos resgistros dan 4 registros,Lo que deseo saber
> > es
> > como eliminar este duplicado
> >
> > Las estructuras son :
> >
> > Tabla : vta_movimiento_detalle
> >
> > cod_movimiento char no 10
> > cod_alm char no 2
> > pro_cod nvarchar no 40
> > prt_cod int no 4
> > cod_tpomodelo char no 2
> > cod_talla char no 2
> > cod_color char no 3
> > cantidad int no 4
> > precio real no 4
> > igv real no 4
> > ofe_flg tinyint no 1
> > descuento decimal no 9
> > dev_flg int no 4
> >
> > Tabla vta_movimiento_frmpago :
> >
> > cod_mov char no 10
> > cod_alm char no 2
> > cod_frm_pag char no 2
> > rel_inf char no 50
> > mon_pag real no 4
> > mon_tot real no 4
> > tip_mon char no 1
> >
> >
> >
> >
> > "Alejandro Mesa" wrote:
> >
> > > Eru,
> > >
> > > Postea la estructura de las tablas, data de ejemplo y resultados esperados.
> > > Ayudanos para poder ayudarte.
> > >
> > >
> > > AMB
> > >
> > > "Eru" wrote:
> > >
> > > > hola a todos y les agradezco por su atrecion y la ayuda que puedan brindarme..
> > > >
> > > > Tengo una vista en la cual hago varios joins, el caso es que llega un
> > > > momento en cual duplica datos ya que tengo una tabla A que cruzo con la tabla
> > > > B pero la tabla A tiene 3 registro y la B tiene 2 registros entonces como
> > > > rsultado me muestra 6 registro, cuando solo debe de mostrarme 3 registros que
> > > > son los registros de la Tabla A, como puedo hacer para que solo me muestren
> > > > los registros de la tabla B
> > > >
> > > > gracias por todo
> > > > saludos
> > > >
> > > > Eru -.-"
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida