Ir para conteúdo

Arquivado

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

HELENO de Sant'Anna

COMPUTED BY - Até agora não encontrei solução

Recommended Posts

Na tabela seguinte faço o cadastro de todas as escolas municipais do município aonde moro:

--------------------------------------------------------------------------------------------------------------------------

CREATE TABLE "ESCOLAORGAO"
(
"ESC_CODIGO" INTEGER NOT NULL,
"ESC_NOME" VARCHAR(50) NOT NULL,
"ESC_CODINEP" VARCHAR(8),
"ESC_LOGRADOURO" INTEGER NOT NULL,
"ESC_ENDERECO" VARCHAR(60),
"ESC_NUMERO" VARCHAR(10),
"ESC_BAIRRO" VARCHAR(40),
"ESC_CIDADE" INTEGER NOT NULL,
"ESC_ESTADO" INTEGER NOT NULL,
"ESC_TELEFONE" VARCHAR(15),
"ESC_EMAIL" VARCHAR(40),
"ESC_CEP" VARCHAR(9),
"ESC_ALUNOS" VARCHAR(5),
"ESC_LOCALIZACAO" CHAR(1),
"ESC_DATACADASTRO" TIMESTAMP,
"ESC_OBSERVACOES" VARCHAR(150),
"ESC_CNPJ" VARCHAR(18),
"ESC_LOGO" VARCHAR(50),
"ESC_CADASTROESCOLAR" VARCHAR(10),
"ESC_PORTARIA" VARCHAR(10),
"ESC_DATAPORTARIA" TIMESTAMP,
"ESC_COMPLEMENTO" VARCHAR(20),
"ESC_TIPOINSTITUICAO" CHAR(1),
CONSTRAINT "ESCOLAORGAO_PK" PRIMARY KEY ("ESC_CODIGO")
);
CREATE INDEX "IND_COD_ESCOLAORGAO" ON "ESCOLAORGAO"("ESC_CODIGO");
CREATE INDEX "IND_NOME_ESCOLAORGAO" ON "ESCOLAORGAO"("ESC_NOME");
ALTER TABLE "ESCOLAORGAO" ADD CONSTRAINT "ESCCID_FK" FOREIGN KEY ("ESC_CIDADE") REFERENCES "CIDADES" ("CID_CODIGO");
ALTER TABLE "ESCOLAORGAO" ADD CONSTRAINT "ESCESTADO_FK" FOREIGN KEY ("ESC_ESTADO") REFERENCES "ESTADOS" ("EST_CODIGO");
ALTER TABLE "ESCOLAORGAO" ADD CONSTRAINT "ESLOG_FK" FOREIGN KEY ("ESC_LOGRADOURO") REFERENCES "LOGRADOUROS" ("LOG_CODIGO");
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
Como os DIRETORES já são cadastrados na tabela FUNCIONÁRIOS, então eu pretendo criar um CAMPO CALCULADO direto na tabela ESCOLAS para EXIBIR o nome do(a) Diretor(a). Então usei o seguinte código SQL:
alter table escolaOrgao
add esc_diretor COMPUTED BY ((
select fun_nome from funcionarios
join cargoFuncao on (fun_funcao = car_codigo)
where car_nome = 'DIRETOR(A)'));
Só que dá ERRO quando vou abrir a tabela ESCOLAS pois o código SQL acima lista o nome de todos os diretores de todas as escolas e não de uma escola específica.
Desse modo, como eu posso incrementar o código SQL acima para para que ele liste apenas o nome do diretor cadastrado para a escola na tabela funcionários?
Parte do código da tabela funcionários:
CREATE TABLE "FUNCIONARIOS"
(
"FUN_CODIGO" INTEGER NOT NULL,
"FUN_NOME" VARCHAR(60) NOT NULL,
"FUN_VINCULOEMPREGATICIO" INTEGER NOT NULL,
"FUN_CARGO" INTEGER NOT NULL,
"FUN_FUNCAO" INTEGER NOT NULL,
"FUN_DATAADMISSAO" TIMESTAMP,
"FUN_ESCOLAORGAO" INTEGER NOT NULL,
.
.
.
Ficarei muito grato por quem puder me ajudar.
Desde já um abraço a todos.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em que SGBD vc quer rodar isto !? Nem todos aceitam estas síntaxe virtual de um select)

 

Sql Server , Oracle (acho) , mysql (não) , firebird (acho que não)

...........

 

Mas creio que faltou uma condição nos seu select para lidar o diretor à escola.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Numa pesquisada rápida não achei síntexe (computed by com select) na documentação, ela existe ?

 

Se existia faltaria a sua sql vincular o FUNCIONARIO à ESCOLAORGAO.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Moderador poderia mover este tópico para "outros bds" ?

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.