1
resposta

SQL

Senhores boa tarde,

Estou fazendo um teste com esse sql, porem na ultima clausula o INNER JOIN TAB7 AS LF ON LF.NUMALE2 = V2.NUMALE2 não possui o registro na TAB7.

O que é possivel fazer neste caso, para não anular a busca.?

SELECT 
TAB1.DEP          AS     "Deposito" ,
TAB1.LOTE         AS     "Lote" ,
TAB1.CDMAT        AS     "codProduto" ,
TAB1.DESC         AS     "DescProduto" ,
TAB1.REMESSA      AS     "DataRemessa" ,
TAB1.NUMREMESSA   AS     "NRemessa" ,
L.HORAREME        AS     "HoraRemessa" ,
L.MODAVEND        AS     "Modalidadevenda" ,
L.CARGA           AS     "QuantidadeCarga" ,
K.NOME            AS     "Cliente",
V2.TEXT2          AS     "PlacaCarreta",
LF.NAME1          AS     "Transportadora"

FROM LIPS AS TAB1

INNER JOIN TAB2 AS M ON (M.MATNR = TAB1.MATNR) 
INNER JOIN TAB3 AS L ON (L.REMESSA = TAB1.REMESSA)
INNER JOIN TAB4 AS K ON K.NUME2 = L.NUME2
INNER JOIN TAB5 AS V ON V.REMESSA = TAB1.REMESSA
INNER JOIN TAB6 AS V2 ON V2.NUMALE = V.NUMALE
INNER JOIN TAB7 AS LF ON LF.NUMALE2 = V2.NUMALE2

WHERE TAB1.REMESSA = 009999989
1 resposta

Oii Leandro, tudo bom?

Desculpa pela demora em retornar com sua resposta.

Deixe-me entender: por conta de a TAB7 não ter registros está anulando a busca, certo?

Nesse caso, é necessário você saber qual tipo de JOIN utilizar;

  • Inner Join: busca os dados se estiverem presentes nas duas tabelas.

  • Outer Join: aqui, são de três tipos.

    • Left Outer Join: busca os dados se estiverem presentes na tabela da esquerda.

    • Right Outer Join: busca os dados se estiverem presentes na tabela da direita.

    • Full Outer Join: busca os dados se estiverem presentes em qualquer uma das duas tabelas.

Eu acredito que usar o FULL OUTER JOIN, resolveria o seu problema. Faça um teste pra gente.

Me avise qualquer coisa, tá bom? :)