ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Select dentro de update firebird 2.5

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
Eugenio_jose
Novato
Novato


Registrado: Sexta-Feira, 6 de Março de 2015
Mensagens: 69

MensagemEnviada: Sex Dez 18, 2015 10:43 am    Assunto: Select dentro de update firebird 2.5 Responder com Citação

Boa tarde, estou querendo atualizar um campo (COMISSAO), só que o valor que quero pegar eu tento obter atraves de um SELECT e por nada dá certo, alguém sabe o que posso estar fazendo de errado nomeu codigo?
Estou tentando fazer diretamente no IBCONSOLE.

update AEAULAS set COMISSAO = (select AEAULAS.codaluno,CONTAULA.comissao from AEAULAS
inner join CONTAULA on (CONTAULA.dataula = AEAULAS.dataula)
where (AEAULAS.codaluno = CONTAULA.codaluno) and (AEAULAS.dataula = CONTAULA.dataula))

A mensagem de erro que dá é a seguinte:
ISC ERROR CODE:335544569

ISC ERROR MESSAGE:
Dynamic SQL Error
SQL error code = -104
Invalid command
count of column list and variable list do not match
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Sex Dez 18, 2015 10:56 am    Assunto: Responder com Citação

Boa tarde,

Experimente dessa forma:

Código:
update AEAULAS
set COMISSAO =
        (select CONTAULA.comissao from CONTAULA
         where
             CONTAULA.codaluno = AEAULAS.codaluno and
             CONTAULA.dataula = AEAULAS.dataula)


Espero que ajude

_________________
Assinatura: http://www.imoveisemexposicao.com.br/imoveis-venda-itaquaquecetuba-residencial-casa
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Eugenio_jose
Novato
Novato


Registrado: Sexta-Feira, 6 de Março de 2015
Mensagens: 69

MensagemEnviada: Sex Dez 18, 2015 7:49 pm    Assunto: Select dentro de update firebird 2.5 Responder com Citação

imex escreveu:
Boa tarde,

Experimente dessa forma:

Código:
update AEAULAS
set COMISSAO =
        (select CONTAULA.comissao from CONTAULA
         where
             CONTAULA.codaluno = AEAULAS.codaluno and
             CONTAULA.dataula = AEAULAS.dataula)


Espero que ajude

_________________
Assinatura: http://www.imoveisemexposicao.com.br/imoveis-venda-itaquaquecetuba-residencial-casa


Obrigado pela atenção, só que não deu certo ele não levou os valores que deveria levar, acho até que pode ser pela falta do join. Cheguei tarde mas vou tentar.

sds

Eugenio
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Sex Dez 18, 2015 8:06 pm    Assunto: Responder com Citação

Acho que seria melhor se você tivesse postado alguns valores de exemplo nos registros das tabelas para poder entender melhor, mas desconfio que não seja o caso de utilizar Join.
Da forma como está o comando que sugeri, é gravado o valor do campo Comissao da tabela Contaula cujo registro possui o mesmo valor nos campos Codaluno e Dataula da tabela Aeaulas.
Se não gravou os valores esperados, talvez seja o caso de adicionar ou trocar os filtros da clausula Where.

Espero que ajude
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Eugenio_jose
Novato
Novato


Registrado: Sexta-Feira, 6 de Março de 2015
Mensagens: 69

MensagemEnviada: Qua Dez 23, 2015 12:20 pm    Assunto: Select dentro de update firebird 2.5 Responder com Citação

Caro colega, acho que eu estou fazendo uma bobagem, não preciso CRIAR o campo COMISSÃO na minas tabela AEAULAS.
Eu tenho uma tabela chamada CONTAULA onde já tem o valor da COMISSÃO e tenho tenho o campo CODALUNO também. Olha a estrutura de minhas tabelas;

TABELA AEAULAS
"CODIGO" INTEGER,
"CODALUNO" INTEGER,
"NOMALUNO" VARCHAR(50) CHARACTER SET WIN1252,
"CARTEIRA" VARCHAR(14) CHARACTER SET WIN1252,
"NOMINSTR" VARCHAR(50) CHARACTER SET WIN1252,
"DATAULA" DATE,
"DTBAIXA" DATE,

TABELA CONTAULA

"CODIGO" INTEGER,
"CARTEIRA" VARCHAR(14) CHARACTER SET WIN1252,
"INSTRUTOR" VARCHAR(40) CHARACTER SET WIN1252,
"DATAULA" DATE,
"CODALUNO" INTEGER,
"NOMALUNO" VARCHAR(50) CHARACTER SET WIN1252,
"COMISSAO" NUMERIC(10,2),

Estou pensando em montar um select onde iria pegar o valor da COMISSÃO usando os campos CODALUNO, DATAULA da tabela CONTAULA e da tabela AEAULAS.
Acha que pode dar certo assim?
Como sugeri que eu faça?

sds

Eugenio

imex escreveu:
Acho que seria melhor se você tivesse postado alguns valores
de exemplo nos registros das tabelas para poder entender melhor, mas desconfio que não seja o caso de utilizar Join.
Da forma como está o comando que sugeri, é gravado o valor do campo Comissao da tabela Contaula cujo registro possui o mesmo valor nos campos Codaluno e Dataula da tabela Aeaulas.
Se não gravou os valores esperados, talvez seja o caso de adicionar ou trocar os filtros da clausula Where.

Espero que ajude
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Seg Dez 28, 2015 8:59 am    Assunto: Responder com Citação

Acho que você pode montar uma query com Join. Ex:

Código:
select
    a.Codigo,
    a.CodAluno,
    a.NomAluno,
    a.DatAula,
    c.Comissao
from AEAULAS as a
inner join CONTAULA as c
    on c.CodAluno = a.CodAluno and
       c.DatAula = a.DatAula


obs: me parece que não é necessário ter o campo NomAluno na tabela CONTAULA

Espero que ajude
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB