Como fazer esta View?????

Firebird

13/07/2006

Pessoal... tenho a seguinte view :

CREATE VIEW SELECT_MANUTENCAO_CORRETIVA( C_COD_INSUMO, C_DATA_EXECUCAO, C_TIPO_MANUT, C_COD_GRUPO_PAT, C_COD_SUB_GRUPO_PAT, C_COD_COLABORADOR, C_USUARIO, C_ENDERECO_MANUT, C_GRANDEZA_CONSUMO_MEDIO, C_QTD_CONSUMO_MEDIO, C_QTD_MANUT, C_GRANDEZA_MANUT, C_DATA_PREVISAO, C_COD_OS, C_COD_CONJUNTO, C_COD_REFERENCIA, C_SOLICITANTE, C_DESC_SOLICITACAO, C_DESC_INSUMO, C_DESC_GRUPO_PAT, C_DESC_SUB_GRUPO_PAT, C_DESC_CONJUNTO, C_NOME_COLABORADOR) AS select CM0100.C_COD_INSUMO, CM0100.C_DATA_EXECUCAO, CM0100.C_TIPO_MANUT, CM0100.C_COD_GRUPO_PAT, CM0100.C_COD_SUB_GRUPO_PAT, CM0100.C_COD_COLABORADOR, CM0100.C_USUARIO, CM0100.C_ENDERECO_MANUT, CM0100.C_GRANDEZA_CONSUMO_MEDIO, CM0100.C_QTD_CONSUMO_MEDIO, CM0100.C_QTD_MANUT, CM0100.C_GRANDEZA_MANUT, CM0100.C_DATA_PREVISAO, CM0100.C_COD_OS, CM0100.C_COD_CONJUNTO, CM0100.C_COD_REFERENCIA, CM0100.C_SOLICITANTE, CM0100.C_DESC_SOLICITACAO, IN0100.C_DESC_INSUMO, GP0100.C_DESC_GRUPO_PAT, GP0200.C_DESC_SUB_GRUPO_PAT, GP0300.C_DESC_CONJUNTO, CA0500.C_NOME_COLABORADOR from CM0100, IN0100, GP0100, GP0200, GP0300, CA0500 where CM0100.C_DATA_EXECUCAO IS NULL and CM0100.C_TIPO_MANUT = ´C´ and CM0100.C_COD_INSUMO = IN0100.C_COD_INSUMO and CM0100.C_COD_GRUPO_PAT = GP0100.C_COD_GRUPO_PAT and CM0100.C_COD_SUB_GRUPO_PAT = GP0200.C_COD_SUB_GRUPO_PAT and GP0100.C_COD_GRUPO_PAT = GP0200.C_COD_GRUPO_PAT and CM0100.C_COD_GRUPO_PAT = GP0200.C_COD_GRUPO_PAT and CM0100.C_COD_CONJUNTO = GP0300.C_COD_CONJUNTO and GP0100.C_COD_GRUPO_PAT = GP0300.C_COD_GRUPO_PAT and GP0200.C_COD_SUB_GRUPO_PAT = GP0300.C_COD_SUB_GRUPO_PAT and CM0100.C_COD_COLABORADOR = CA0500.C_COD_COLABORADOR ;


mas está faltando um campo... o Nome do Solicitante, pois como está só traz o código do solicitante... o problema é que o nome do solicitante provém da mesma tabela que o colaborador CA0500, na qual o select já traz o campo C_NOME_COLABORADOR. Enfim, preciso do nome do colaborador que é responsável pela manutenção e o nome do solicitante, que é o mesmo campo na tabela.

preciso que fique mais ou menos assim :

CREATE VIEW SELECT_MANUTENCAO_CORRETIVA( C_COD_INSUMO, C_DATA_EXECUCAO, C_TIPO_MANUT, C_COD_GRUPO_PAT, C_COD_SUB_GRUPO_PAT, C_COD_COLABORADOR, C_USUARIO, C_ENDERECO_MANUT, C_GRANDEZA_CONSUMO_MEDIO, C_QTD_CONSUMO_MEDIO, C_QTD_MANUT, C_GRANDEZA_MANUT, C_DATA_PREVISAO, C_COD_OS, C_COD_CONJUNTO, C_COD_REFERENCIA, C_SOLICITANTE, C_DESC_SOLICITACAO, C_DESC_INSUMO, C_DESC_GRUPO_PAT, C_DESC_SUB_GRUPO_PAT, C_DESC_CONJUNTO, C_NOME_COLABORADOR, C_NOME_SOLICITANTE) AS select CM0100.C_COD_INSUMO, CM0100.C_DATA_EXECUCAO, CM0100.C_TIPO_MANUT, CM0100.C_COD_GRUPO_PAT, CM0100.C_COD_SUB_GRUPO_PAT, CM0100.C_COD_COLABORADOR, CM0100.C_USUARIO, CM0100.C_ENDERECO_MANUT, CM0100.C_GRANDEZA_CONSUMO_MEDIO, CM0100.C_QTD_CONSUMO_MEDIO, CM0100.C_QTD_MANUT, CM0100.C_GRANDEZA_MANUT, CM0100.C_DATA_PREVISAO, CM0100.C_COD_OS, CM0100.C_COD_CONJUNTO, CM0100.C_COD_REFERENCIA, CM0100.C_SOLICITANTE, CM0100.C_DESC_SOLICITACAO, IN0100.C_DESC_INSUMO, GP0100.C_DESC_GRUPO_PAT, GP0200.C_DESC_SUB_GRUPO_PAT, GP0300.C_DESC_CONJUNTO, CA0500.C_NOME_COLABORADOR, CA0500.C_NOME_COLABORADOR as C_NOME_SOLICITANTE from CM0100, IN0100, GP0100, GP0200, GP0300, CA0500 where CM0100.C_DATA_EXECUCAO IS NULL and CM0100.C_TIPO_MANUT = ´C´ and CM0100.C_COD_INSUMO = IN0100.C_COD_INSUMO and CM0100.C_COD_GRUPO_PAT = GP0100.C_COD_GRUPO_PAT and CM0100.C_COD_SUB_GRUPO_PAT = GP0200.C_COD_SUB_GRUPO_PAT and GP0100.C_COD_GRUPO_PAT = GP0200.C_COD_GRUPO_PAT and CM0100.C_COD_GRUPO_PAT = GP0200.C_COD_GRUPO_PAT and CM0100.C_COD_CONJUNTO = GP0300.C_COD_CONJUNTO and GP0100.C_COD_GRUPO_PAT = GP0300.C_COD_GRUPO_PAT and GP0200.C_COD_SUB_GRUPO_PAT = GP0300.C_COD_SUB_GRUPO_PAT and CM0100.C_COD_COLABORADOR = CA0500.C_COD_COLABORADOR and C_NOME_SOLICITANTE = CA0500.C_COD_COLABORADOR ;


será que conseguí me explicar???

alguém sabe como fazer este select numa VIEW ????

agradeço a todos antecipadamente..


Cabelo

Cabelo

Curtidas 0

Respostas

Sremulador

Sremulador

13/07/2006

você tera que fazer duas rerefencia a tabela distintas

CM0100.C_COD_COLABORADOR = 2REFER.C_COD_COLABORADOR and
C_NOME_SOLICITANTE = 1REFER.C_COD_COLABORADOR


GOSTEI 0
Cabelo

Cabelo

13/07/2006

Mas o problema é que as duas refer~encias são a mesma tabela....

Ficaria assim então ????

CM0100.C_COD_COLABORADOR = CA0500.C_COD_COLABORADOR and C_SOLICITANTE = CA0500.C_COD_COLABORADOR


mas aí ele seleciona os dados a errados selecionará, somente os registros em que os colaboradores, forem os mesmos tanto para a manutenção(executante responsável) e tanto para o solicitante... e na maioria das vezes, para não dizer em todas as vezes, o solicitante é diferente do responsável...


GOSTEI 0
POSTAR