SELECT retorna valores duplicados

2 respostas
LEPRA

Eae povo,

Eu tenho um SELECT meio grande e ele ta retornando valores duplicados.

É mais ou menos assim

Eu tenho os equipamentos, Desktop, Notebook, Celular e Placa de dados.
Enquanto eu tenho até 1 equipamento de cada cadastrado no banco ta tudo blz…
Quando eu cadastro mais um Desktop , por exemplo, ele retorna os dois desktops e duplica os outros equipamentos…

Acho q expliquei certinho o problema
Segue o SELECT :twisted:

SELECT DISTINCT

	F.MATRICULA, F.NOME AS NOMEFUNC, D.ID_FABRICANTE AS IDFAB_D, FED.NOME AS NOMEFAB_D, D.MODELO AS MOD_D,

	D.SERIAL_NUMBER AS SERIAL_D, D.MONITOR,D.MODELO_MONITOR, D.SERIAL_NUMBER_MONITOR,
	D.FLAG_TECLADO AS FLAGT_D, D.FLAG_MOUSE AS FLAGM_D, D.ATIVO_FIXO AS ATFIXO_D,D.TAG_BMS AS TBMS_D,
	D.OBSERVACAO AS OBS_D, D.NF AS NF_D, D.SERIE AS SERIE_D, D.DATA_COMPRA AS DATAC_D,

	N.ID_FABRICANTE AS IDFAB_N, FEN.NOME AS NOMEFAB_N, N.MODELO AS MOD_N, N.SERIAL_NUMBER AS SERIAL_N,
	N.FLAG_FONTE, N.FLAG_MALA, N.FLAG_TECLADO AS FLAGT_N, N.FLAG_MOUSE AS FLAGM_N, N.ATIVO_FIXO AS ATFIXO_N,
	N.TAG_BMS AS TBMS_N, N.FLAG_DOCKSTATION_FONTE, N.FLAG_DOCKSTATION_MOUSE, N.FLAG_DOCKSTATION_TECLADO, 
	N.OBSERVACAO AS OBS_N, N.NF AS NF_N, N.SERIE AS SERIE_N, N.DATA_COMPRA AS DATAC_N,

	P.ID_FABRICANTE AS IDFAB_P, FEP.NOME AS NOMEFAB_P, P.MODELO AS MOD_P,
	P.IMEI AS IMEI_P, P.FLAG_CABO_USB, P.SIM_CARD AS SIMC_P, P.FLAG_CARREGADOR AS FLAGC_P,
	P.FLAG_CARTAO_PIN AS FLAGCPIN_P, P.FLAG_CD_SINCRONIZACAO, P.OBSERVACAO AS OBS_P, P.NF AS NF_P, P.SERIE AS SERIE_P,
	P.DATA_COMPRA AS DATAC_P,

	C.ID_FABRICANTE AS IDFAB_C, FEC.NOME AS NOMEFAB_C, C.MODELO AS MOD_C,
	C.IMEI AS IMEI_C, C.LINHA, C.SIM_CARD AS SIMC_C, C.FLAG_CARREGADOR AS FLAGC_C,
	C.FLAG_CARTAO_PIN AS FLAGCPIN_C, C.OBSERVACAO AS OBS_C, C.NF AS NF_C, C.SERIE AS SERIE_C, C.DATA_COMPRA AS DATAC_C

FROM 
	VW_REPRESENTANTE_FUNCIONARIO F

	LEFT JOIN AT_EQUIPAMENTO EQUIP_D ON EQUIP_D.TIPO_EQUIPAMENTO = 'D' AND F.ID = EQUIP_D.ID_FUNCIONARIO
	LEFT JOIN AT_DESKTOP D ON (D.ID=EQUIP_D.ID_EQUIPAMENTO)
	LEFT JOIN AT_FABRICANTE_EQUIPAMENTO FED ON (FED.ID=D.ID_FABRICANTE)
	LEFT JOIN AT_EQUIPAMENTO EQUIP_N ON EQUIP_N.TIPO_EQUIPAMENTO = 'N' AND F.ID = EQUIP_N.ID_FUNCIONARIO
	LEFT JOIN AT_NOTEBOOK N ON (N.ID=EQUIP_N.ID_EQUIPAMENTO)
	LEFT JOIN AT_FABRICANTE_EQUIPAMENTO FEN ON (FEN.ID=N.ID_FABRICANTE)
	LEFT JOIN AT_EQUIPAMENTO EQUIP_P ON EQUIP_P.TIPO_EQUIPAMENTO = 'P' AND F.ID = EQUIP_P.ID_FUNCIONARIO
	LEFT JOIN AT_PLACA_DADOS P ON (P.ID=EQUIP_P.ID_EQUIPAMENTO)
	LEFT JOIN AT_FABRICANTE_EQUIPAMENTO FEP ON (FEP.ID=P.ID_FABRICANTE)
	LEFT JOIN AT_EQUIPAMENTO EQUIP_C ON EQUIP_C.TIPO_EQUIPAMENTO = 'C' AND F.ID = EQUIP_C.ID_FUNCIONARIO
	LEFT JOIN AT_CELULAR C ON (C.ID=EQUIP_C.ID_EQUIPAMENTO)
	LEFT JOIN AT_FABRICANTE_EQUIPAMENTO FEC ON (FEC.ID=C.ID_FABRICANTE)

WHERE 
	F.ID = 12345678

Quem puder ajudar…

2 Respostas

robinsonbsilva

Jovem,

è meio complicado analisarmos SQL já que a base de dados está “aí com vc”…rs!

Como sugestão faça o seguinte, começa montando inner join a inner join , ou seja, relacionando as tabelas uma vez de cada, assim você pode analisar qual delas estará duplicando as linhas!

LEPRA

robinsonbsilva:
Jovem,

è meio complicado analisarmos SQL já que a base de dados está “aí com vc”…rs!

Como sugestão faça o seguinte, começa montando inner join a inner join , ou seja, relacionando as tabelas uma vez de cada, assim você pode analisar qual delas estará duplicando as linhas!

Valeu cara já tinha resolvido de outra maneira
deu pra demembrar o SELECT…
valeu

Criado 21 de janeiro de 2009
Ultima resposta 21 de jan. de 2009
Respostas 2
Participantes 2