#1
|
|||
|
|||
Necesito hacer un INNER JOIN de 3 tablas eficiente
Tengo 3 tablas:
LFA1: - lifnr (Clave) - land1 - ... LFB1: - lifnr (Clave) - bukrs (Clave) - pernr - ... LFBK: - lifnr (Clave) - banks (Clave) - bankl (Clave) - bankn (Clave) - bkont - ... lo que necesito es un INNER JOIN entre LFA1 y LFB1 en lifnr y ésta un LEFT OUTER JOIN con la LFBK en lifnr Mi primera solución fue: select lifnr land1 .... from LFA1 as a INNER JOIN LFB1 as b on .... OUTER JOIN .... pero me dijeron que era ineficiente, que usara FOR ALL ENTRIES entonces implementé lo siguiente: El gran problema es que el campo lifnr NO es clave de la tabla LFB1 por lo tanto debo anidar un loop, y además para la condición LEFT OUTER JOIN debo anidar otro loop ya que lifnr tampoco es clave de LFBK. Como imaginarán, esto tarda un poco mas que una eternidad. Existe una solución mas eficiente???, cuando usamos FOR ALL ENTRIES y los campos que accedemos no son claves (No podemos usar READ TABLE) y por lo tanto debemos anidar loops. Además de la ineficiencia, con la condición LEFT OUTER JOIN se me plantéo que el APPEND del loop mas interno debería hacer dentro del loop si consiguió algún registro, SINO fuera (con las campos NULL) si no consiguio ningún registro. Estaría bien, eso? Saludos, Gracias |
Herramientas | Buscar en Tema |
Desplegado | |
|
|