#1
|
|||
|
|||
inner join (Duplica Información)
Hola, a todos. Tengo un problema que no estoy pudiendo solucionar, hago el siguiente inner join y en agunos casos, que no puedo detectar que tienen, me duplica la información, alguien me puede decir que tengo mal.
Saludos y gracias. SELECT ekes~ebeln "Nº O.C. ekes~ebelp "Posición de O.C. ekes~eindt "Fecha de Entrega ekes~menge "Cantidad ekes~xblnr "Documento Externo ekes~ebtyp "Tipo de Confirmación ekpo~matnr "Material ekko~lifnr "Proveedores vbep~vbeln "Pedido de Ventas vbep~posnr "Posición vbep~edatu "Fecha de Entrega vbak~kunnr "Cliente Solicitante vbak~bstnk "Referencia al pedido del cliente vbup~fksta "Estado Respecto Facturación INTO CORRESPONDING FIELDS OF TABLE t_interz1 FROM ekes INNER JOIN ekko ON ekes~ebeln = ekko~ebeln INNER JOIN ekpo ON ekes~ebeln = ekpo~ebeln AND ekes~ebelp = ekpo~ebelp INNER JOIN eban ON ekpo~ebeln = eban~ebeln AND ekpo~ebelp = eban~ebelp INNER JOIN ebkn ON eban~banfn = ebkn~banfn AND eban~bnfpo = ebkn~bnfpo INNER JOIN vbep ON ebkn~vbeln = vbep~vbeln AND ebkn~vbelp = vbep~posnr INNER JOIN vbup ON vbep~vbeln = vbup~vbeln AND vbep~posnr = vbup~posnr INNER JOIN vbak ON vbep~vbeln = vbak~vbeln WHERE ekes~eindt IN s_einZ1 "Fecha de Confirmación AND ekes~ebtyp = 'Z1' "Tipo de Confirmacion de Entregs AND ekes~ebeln IN s_ebeln "Documento de Compras AND ekpo~werks = p_werks "Centro AND ekpo~loekz NE 'L' AND ekpo~knttp EQ 'X' AND ekpo~pstyp EQ '5' "Pedidos a Terceros AND vbak~kunnr IN s_kunnr "Cliente Solicitante AND vbak~bstnk IN s_bstnk "Referencia al pedido del Cliente AND vbak~vbeln IN s_vbeln "Documento de Ventas AND ekpo~matnr IN s_matnr "Material AND ekko~lifnr IN s_lifnr. "Proveedor |
#2
|
|||
|
|||
Estimado.
De acuerdo a tu comentario, si mencionas que sólo en ALGUNOS CASOS duplica información, en lo personal, revisaria la consistencia de DATA en la base de datos (Tomarse la molestia de ir Tabla a Tabla y hacer los "Select" manuales vía SE16 o SE16n). En todo caso, si deseas una solución rápida (lo cuál no quiere decir sea la más óptima) puedes aplicar un DELETE ADJACENT DUPLICATES (Uy tiempo que no ocupo esta sentencia) luego de la selección, y así te aseguras que no te queden registros duplicados. Asimismo, en lo personal no soy muy amigo de los "Inner Join" pero si puedes realizar la consulta de otra manera mucho más rápida y en forma secuencial intenta aplicarla, para mejorar la performance de tu programa y en casos como este vía debugger puedas revisar que efectivamente rescata la data que tú le solicitas. Recuerda es sólo un computador, el hace lo que tú ordenes. Saludos y éxitos. |
#3
|
|||
|
|||
Reconozco que los inner join en muchos casos mejoran el rendimiento y son cómodos para hacer consultas. Pero en este caso creo que es mejor lo que comenta el amigo jcflores. Obtén los datos con selects más sencillos y mediante for all entries, esa sentencia que has puesto es demasiado compleja.
Saludos |
Herramientas | Buscar en Tema |
Desplegado | |
|
|