Jump to content
Sign in to follow this  
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]'

Share this post


Link to post
Share on other 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?

Share this post


Link to post
Share on other 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)

  • +1 1

Share this post


Link to post
Share on other 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%

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.