Fórum Resultado do Select se repete 9 vezes ! #58145
08/04/2007
0
CREATE TABLE TAB_SERVICOS (
ID_SERVICOS
SER_DESCRICAO
SER_ID_NIVEL
SER_VALOR
);
CREATE TABLE TAB_MOT_MODELO (
ID_MOT_MODELO ,
MOT_MO_ID_MOTOR_MARCA ,
MOT_MO_ID_NIVEL ,
MOT_MO_MODELO ,
MOT_MO_MARCA_MODELO ,
MOT_MO_APLICACAO
);
CREATE TABLE TAB_OS (
ID_OS ,
OS_ID_MOT_MODELO ,
OS_ID_FORMA_DE_PAG ,
OS_ID_FUNCIONARIO ,
OS_DATA_ABERTURA ,
OS_DATA_FECHAMENTO
. . .
);
CREATE TABLE TAB_OS_SERVICO_I (
ID_OS_SERVICO_I ,
OS_SER_I_ID_OS ,
OS_SER_I_ID_SERVICOS ,
OS_SER_I_QUANTIDADE ,
OS_SER_I_VALOR_UNI ,
OS_SER_I_VALOR_TOTAL ,
OS_SER_I_PRONTO
);
Para preencher a tabela de Itens Serviço (TAB_OS_SERVICO_I), coloqui um DBGrid ligado na tabela de Serviços (TAB_SERVICOS), e para preencher o DBGrid fiz a seguite select:
select * from tab_servicos S inner join tab_mot_modelo M on M.mot_mo_id_nivel = S.ser_id_nivel inner join tab_os O on ´´´+IntToStr(Modulo.setOSOS_ID_MOT_MODELO.Value)+´´´ = M.id_mot_modelo
sendo que:
´´´+IntToStr(Modulo.setOSOS_ID_MOT_MODELO.Value)+´´´
= OS_ID_MOT_MODELO
A duvida é no select, o resultado do select me retorna no DBGrid os valores corretos, porem se repetem, isso mesmo, o resultado se repete no dbgrid 9 vezes.
Como faço para que o resultado do select nao se repita?
Obrigado pela atenção.
Ullrich
Curtir tópico
+ 0Posts
10/04/2007
Acacio
1. Pegar somente os campos que te interessam em vez de ´*´ todos
2. se mesmo assim estiver trazendo registro duplicados use a função
distinct que provavelemnte resolverá o teu problema.
Gostei + 0
10/04/2007
Ullrich
que eu esperava.
Vou mostrar aqui os resultados para que vc possa analizar:
1) Caso.
Select * from tab_servicos S inner join tab_mot_modelo M on
M.mot_mo_id_nivel = S.ser_id_nivel inner join tab_os O on ´10´ =
M.id_mot_modelo
Resultado da pesquisa.
Cod Descrição
2 VI RETIFICA
11 VI DESIMPENAR
26 BL BRUNIR
2 VI RETIFICA
11 VI DESIMPENAR
26 BL BRUNIR
2 VI RETIFICA
11 VI DESIMPENAR
26 BL BRUNIR
...
Veja que os resultados se repetem.
2) Caso, usando o comando DISTINCT.
select distinct * from tab_servicos S inner join tab_mot_modelo M on
M.mot_mo_id_nivel = S.ser_id_nivel inner join tab_os O on ´10´ =
M.id_mot_modelo
Cod Descrição
2 VI RETIFICA
2 VI RETIFICA
2 VI RETIFICA
11 VI DESIMPENAR
11 VI DESIMPENAR
11 VI DESIMPENAR
26 BL BRUNIR
26 BL BRUNIR
26 BL BRUNIR
...
Usando o comando distinct o resultado ainda se repete, porem esta
ordenado.
Pode me dar mais alguma dica para arrumar este select !
OBS: Estou executando os select dentro do IBExpert.
Obrigado pela sua atenção.
Gostei + 0
13/04/2007
Acacio
e sim
select distinct campo1,campo2,campo3,campo4 from tab_servicos
O distinct vai funcionar se todos os campos mostrados forem iguais nos diversos registros , mas se apenas um deles tiver um campo que é diferentee ele tras 2 ou mais registro.
Ex. codigo nome cidade
1 1 Blumenau
1 1 Indaial
1 1 Brusque
Note que o código e o nome são iguais mas a cidade é diferente então ele
trará 3 registros mesmo com o distinct. Já se tirar a cidade ele trará somente 1.
Gostei + 0
15/04/2007
Ullrich
Brigadão!
´select distinct ser_descricao, ser_valor,ID_Servicos from tab_servicos S inner join tab_mot_modelo M on M.mot_mo_id_nivel = S.ser_id_nivel inner join tab_os O on ´´´+IntToStr(Modulo.setOSOS_ID_MOT_MODELO.Value)+´´´ = M.id_mot_modelo´
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)