UPDATE com condição em outra tabela

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
carlynhos77
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 172
Registrado em: Seg, 24 Out 2016 7:20 pm

Ola, boa noite...

Tenho 2 tabelas (CAD_ITENS e CAD_ITENS_PREGAO)

Inicialmente, marquei todos meus ITENS (cad_itens) como ITENS_FRACASSADOS

Em determinado momento, para cada proponente, vou importar os itens com as ofertas deles

Esse itens importados, são gerados inicialmente com base na tabela CAD_ITENS...

agora, eu preciso verificar se todos o itens, constantes na tabela CAD_ITENS, tiveram propostas... se sim, vou quero marcar o determinado item da tabela CAD_ITENS como (fracassado = não(2) )... se no select não for achado nenhuma oferta para aquele item, ele permanecera como fracassado mesmo...

Pensei em um UPDATE,

Selecionar tudo

UPDATE CAD_ITENS 
SET ITEM_FRACASSADO  = 2
WHERE id_cidade = :g_id_cidade and CODIGO_LICITACAO = :G_NR_LICITACAO
and CODIGO_ITEM = ( select CODIGO_ITEM from CAD_ITENS_PREGAO where id_cidade = :g_id_cidade and CODIGO_LICITACAO = :G_NR_LICITACAO) ;

Mas não deu certo, algo ta errado ai

Existe oferta, muda a situação do item para 2(não), so isso q preciso
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Como você faz pra saber se um item teve propostas?
Se ele EXISTE na CAD_ITENS_PREGAO significa que teve proposta?
Ou é um campo dessa tabela que indica se houve proposta ou não?
carlynhos77
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 172
Registrado em: Seg, 24 Out 2016 7:20 pm

é assim... montamos o edital que os itens q serão licitados, dai isso ta salvo na tabela CAD_ITENS

os interessados (proponentes) solicitam uma planilha com esses itens para que eles registrem sua oferta incial para cada itens, quando eles devolver essa planilha eu importo esses itens para a tabela CAD_ITENS_PREGAO... essa tabela q tera os registros das rodadas

Porém, ocorrem que alguns itens não terem ofertas, acharam o valor baixo, talvez não tem o item para vender, etc... dai alguns itens ninguém faz proposta inicial, então esse item é considerado fracassado

Quero fazer um loop na tabela CAD_ITENS, verificando na tabela CAD_ITENS_PREGAO se para este item houve alguma oferta, se eu achar alguma oferta, eu já marco ele como não fracassado... se ao pesquisa na tabela CAD_ITENS_PREGOA não for encontrado nenhuma oferta, não faço nada, pois por padrão já deixei todos os itens da tabela CAD_ITENS como fracassados

Então é uma consulta onde, achando um registro correspondente na tabela CAD_ITENS_PREGAO, eu altero a situação do campo fracassado que esta na tabela CAD_ITENS
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Tenta assim:

Selecionar tudo

UPDATE CAD_ITENS y
SET y.ITEM_FRACASSADO  = 2
WHERE y.id_cidade = :g_id_cidade 
  and y.CODIGO_LICITACAO = :G_NR_LICITACAO
  and exists ( select 1 
               from CAD_ITENS_PREGAO x
               where x.id_cidade        = y.id_cidade 
                 and x.CODIGO_LICITACAO = y.codigo_licitacao) ;
carlynhos77
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 172
Registrado em: Seg, 24 Out 2016 7:20 pm

é, você é fera, deu certo, so fiz um ajuste, acrescentei o CODIGO_ITEM

Selecionar tudo

UPDATE LIC_LICITACAO_ITENS y
SET y.ITEM_FRACASSADO  = 2
WHERE y.id_cidade = :g_id_cidade 
  and y.CODIGO_LICITACAO = :G_NR_LICITACAO
  and exists ( select 1 
               from LIC_LICITACAO_ITENS_PREGAO x
               where x.id_cidade        = y.id_cidade 
                 and x.CODIGO_LICITACAO = y.codigo_licitacao
                 and x.CODIGO_ITEM = y.CODIGO_ITEM) ;
problema resolvido... muito obrigado
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Isso mesmo! Esqueci o código do item :-D
Bom que deu certo.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 12 visitantes