Pesquisar

13 de maio de 2009

DOIS DIAS E MEIO PARA ISSO

Linguagem SQL é isso ai... 3 dias para conseguir fazer uma ligação hierarquizada de entidades, que era originalmente para ser em N níveis e acabou sendo fixada em 5 usando metodologia POG (Programação Oreintada a Gambiarra)... depois me perguntam porque não consigo me empolgar muito com a atividade de informática... fazer eu faço e faço bem, mas que eu sofro, sofro:


SELECT DISTINCT
###################################
##DADOS DA UNIDADE ADMINISTRATIVA##
###################################
#SUAF5.ID_UNIDADE_ADM AS 'ID FILHO',
#SUAF5.ID_UNIDADE_ADM_SUP AS 'ID PAI DO FILHO',
SUAF5.NOME AS 'NOME DA UNIDADE ADMINISTRATIVA',
STUA5.NOME AS 'TIPO DA UNIDADE ADMINISTRATIVA',
SUAF5.CENTRO_CUSTO AS 'CENTRO DE CUSTO DA UNIDADE ADMINISTRATIVA',
SUAF5.DESCRICAO AS 'DESCRIÇÃO DA UNIDADE ADMINISTRATIVA',
SUAF5.RESPONSAVEL_NOME AS 'RESPONSÁVEL PELA UNIDADE ADMINISTRATIVA',
SUAF5.RESPONSAVEL_EMAIL AS 'EMAIL DO RESPONSÁVEL PELA UNIDADE ADMINISTRATIVA',

################################################################
##CAMPO DE BUSCA - ESTE CAMPO AGREGA OS NOME DE TODAS AS ##
##UNIDADES ADMINISTRATIVAS SUPERIORES PARA QUE O RELATÓRIO ##
##E A GRID DO SISTEMA DE RELATÓRIOS POSSA FILTRAR POR SI MESMA##
## ##
##DE PREFERÊNCIA NÃO DEVE SER EXIBIDO NO RELATÓRIO, MAS DEVE ##
##SER POR ESTE CAMPO QUE A UNIDADE ADMINISTRATIVA DEVE SER ##
##FILTRADA PELO FILTRO DO RELATÓRIO ##
################################################################
CONCAT(SUAF5.NOME,' [',SUAP.NOME,'][',SUAF4.NOME,'][',SUAF3.NOME,'][',SUAF2.NOME,'][',SUAF1.NOME,']') AS 'NOME BUSCA'


FROM SGP_UNIDADE_ADM SUAP

###################################################################
##LIGAÇÕES DE HIERARQUIA DA UNIDADE ADMINISTRATIVA - ATÉ 5 NÍVEIS##
###################################################################
LEFT JOIN SGP_UNIDADE_ADM SUAF1 ON (SUAF1.ID_UNIDADE_ADM_SUP = SUAP.ID_UNIDADE_ADM)
LEFT JOIN SGP_UNIDADE_ADM SUAF2 ON (SUAF2.ID_UNIDADE_ADM_SUP = SUAF1.ID_UNIDADE_ADM)
LEFT JOIN SGP_UNIDADE_ADM SUAF3 ON (SUAF3.ID_UNIDADE_ADM_SUP = SUAF2.ID_UNIDADE_ADM)
LEFT JOIN SGP_UNIDADE_ADM SUAF4 ON (SUAF4.ID_UNIDADE_ADM_SUP = SUAF3.ID_UNIDADE_ADM)
LEFT JOIN SGP_UNIDADE_ADM SUAF5 ON (SUAF5.ID_UNIDADE_ADM_SUP = SUAF4.ID_UNIDADE_ADM)

#############################################
##LIGAÇÕES DO TIPO DA UNIDADE ADMIISTRATIVA##
#############################################
LEFT JOIN SGP_TIPO_UNIDADE_ADM STUA5 ON (STUA5.ID_TIPO_UNIDADE_ADM = SUAF5.ID_TIPO_UNIDADE_ADM)

###################################################
##CLAUSULA CONDICIONAL PARA OCULTAR VALORES NULOS##
###################################################
WHERE SUAF5.ID_UNIDADE_ADM IS NOT NULL

0 comentários: