Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

asacap1000

Consulta em duas Tabelas com condição

Recommended Posts

Galera estou com uma dúvida em um select e não consegui sair do lugar. inclusive deixei as tabelas em questão em vermelho.

São tres tabelas no sistema uma de cadastro de documento "DESMEMBR DS", outra de carregamento. "IN_OUT IO" e "IN_OUT_POS PO". Eu preciso que as que foram cadastradas na primeira tabela apareçam na tela,mesmo que não estejam nas outras duas. E quando estiver só aparecer enquanto o campo que está em azul "PO.document" estiver vazio, Quando o mesmo for preenchido ele não aparece mais. Como esta em baixo esta linha em azul está comentada desta forma ele me traz todos os documentos inclusive os que já saíram o que não me serve.

select distinct ('( DI: ' || DS.NR_DI ||';  Peso: ' ||ds.gross_weight||'; Vol: '|| ds.mng_vol ||' )') 
  from DESMEMBR DS, IN_OUT_POS PO, KLIENTEN k, IN_OUT IO
 where DS.LAGER = PO.LAGER
   AND IO.ID_IN_OUT = PO.ID_IN_OUT
   AND IO.LAGER = 'PSI' 
   and k.id_klient = ds.id_klient
   AND IO.ID_KLIENT = DS.ID_KLIENT
   --and DS.NR_DI = PO.document(+)
   and ds.stat_nac = '90'
   and IO.TIME_RELEASE is null
   and DS.NR_DI > 1
   and k.SUCHBEGRIFF = '$_SESSION[sobrenome]'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parece que um Outer Join resolve.

Tentei utilizar os joins mas sem sucesso, quando utilizo qualquer um ou ele não traz nada ou traz todos os documentos mesmo os já despachados. Será que mais alguma outra forma de buscar estas informações?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta isto ...

select distinct ('( DI: ' || DS.NR_DI ||';  Peso: ' ||ds.gross_weight||'; Vol: '|| ds.mng_vol ||' )')
  from DESMEMBR DS, IN_OUT_POS PO, KLIENTEN k, IN_OUT IO
 where DS.LAGER = PO.LAGER (+)
   AND IO.ID_IN_OUT (+) = PO.ID_IN_OUT
   AND (IO.LAGER is null or IO.LAGER = 'PSI')
   and k.id_klient = ds.id_klient
   AND IO.ID_KLIENT = DS.ID_KLIENT
   and ds.stat_nac = '90'
   and IO.TIME_RELEASE is null
   and DS.NR_DI > 1
   and k.SUCHBEGRIFF = '$_SESSION[sobrenome]'

...mas tem muita condição envolvida talvez seja o caso de um join , um select quando houver a condição unindo com um quando não houver (usando not exists talvez)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta isto ...

select distinct ('( DI: ' || DS.NR_DI ||';  Peso: ' ||ds.gross_weight||'; Vol: '|| ds.mng_vol ||' )')
  from DESMEMBR DS, IN_OUT_POS PO, KLIENTEN k, IN_OUT IO
 where DS.LAGER = PO.LAGER (+)
   AND IO.ID_IN_OUT (+) = PO.ID_IN_OUT
   AND (IO.LAGER is null or IO.LAGER = 'PSI')
   and k.id_klient = ds.id_klient
   AND IO.ID_KLIENT = DS.ID_KLIENT
   and ds.stat_nac = '90'
   and IO.TIME_RELEASE is null
   and DS.NR_DI > 1
   and k.SUCHBEGRIFF = '$_SESSION[sobrenome]'

...mas tem muita condição envolvida talvez seja o caso de um join , um select quando houver a condição unindo com um quando não houver (usando not exists talvez)

 

 

 

Cara depois de quebrar a cabeça, consegui utilizar o join que voc~e comentou a primeira vez ficou assim.

select DISTINCT ('( DI : ' || D.NR_DI || ';  Peso : ' || d.gross_weight ||
       '; Vol : ' || d.mng_vol || ' )')
  from desmembr d
  LEFT JOIN IN_OUT_POS IOP
    ON D.NR_DI = IOP.DOCUMENT, klienten k, in_out io
 where  io.id_klient = d.id_klient
 and d.id_klient = k.id_klient
 and d.stat_nac = '90'
 and io.time_release is null
 and io.id_in_out = iop.id_in_out
   and k.SUCHBEGRIFF = '$_SESSION[sobrenome]'

Valewww pela ajuda 100%

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.