Dúvida código SQL
Pessoal, estou execuntado o seguinte código sql
select distinct
contas.ID_CONTAS,
Contas.ID_VINCULO,
Contas.ID_GRUPO ,
Contas.ID_SUBGRUPO,
Contas.N_DOCUMENTO,
Contas.DATAENTRADA,
Contas.VALORTOTAL,
Contas.FORMASPAGAMENTO ,
Contas.QTD_PARCELAS,
Contas.TIPOOPERACAO,
Contas.OBS,
Contas.NOME_VINCULO,
Grupo.codigo,
Grupo.descricao,
sub_grupo.codigo,
sub_grupo.descricao,
sub_grupo.codigo_grupo
from CONTAS
inner JOIN Grupo ON (Grupo.codigo = Contas.id_grupo)
inner JOIN Sub_Grupo ON (sub_grupo.codigo_grupo = Grupo.codigo)
where
TipoOperacao=:Tipo
Pois bem na tabela CONTAS, tenho apenas 2 registros cadastrados e quando realizado a pesquisa eles aparecem duplicados ou seja ao invês de aparecer 2 aparece 4 registros, poderiam me informar o que estou fazendo de errado, utilizo Delphi 2007+firebird
Desde já agradeço.
abraço
select distinct
contas.ID_CONTAS,
Contas.ID_VINCULO,
Contas.ID_GRUPO ,
Contas.ID_SUBGRUPO,
Contas.N_DOCUMENTO,
Contas.DATAENTRADA,
Contas.VALORTOTAL,
Contas.FORMASPAGAMENTO ,
Contas.QTD_PARCELAS,
Contas.TIPOOPERACAO,
Contas.OBS,
Contas.NOME_VINCULO,
Grupo.codigo,
Grupo.descricao,
sub_grupo.codigo,
sub_grupo.descricao,
sub_grupo.codigo_grupo
from CONTAS
inner JOIN Grupo ON (Grupo.codigo = Contas.id_grupo)
inner JOIN Sub_Grupo ON (sub_grupo.codigo_grupo = Grupo.codigo)
where
TipoOperacao=:Tipo
Pois bem na tabela CONTAS, tenho apenas 2 registros cadastrados e quando realizado a pesquisa eles aparecem duplicados ou seja ao invês de aparecer 2 aparece 4 registros, poderiam me informar o que estou fazendo de errado, utilizo Delphi 2007+firebird
Desde já agradeço.
abraço
Estanieski
Curtidas 0
Respostas
Ara.es
19/02/2009
Ola estanieski,
O que pode estar acontecendo é:
1 - Uma conta pode ter mais de um grupo, como vc está fazendo um INNER JOIN, os dados da conta irão aparecer quantas vezes tinha um grupo para aquela conta. Exemplo, se uma conta tive 3 grupos e outra conta tiver 1 grupo, irão aparecer 4 linhas no seu select, sendo 3 linhas com os dados da 1ª conta e uma linha com os dados da 2ª conta. so que os dados dos grupos serão diferentes.
2 - Pode estar ocorrendo a mesma situação anterior so que ao inves de uma conta com varios grupos, o que pode estar acontecendo é um grupo ter varios subgrupos.
Verifique esse pontos, caso for um desses casos, sua query não está errada. Qualquer coisa é só perguntar. Flw !!
O que pode estar acontecendo é:
1 - Uma conta pode ter mais de um grupo, como vc está fazendo um INNER JOIN, os dados da conta irão aparecer quantas vezes tinha um grupo para aquela conta. Exemplo, se uma conta tive 3 grupos e outra conta tiver 1 grupo, irão aparecer 4 linhas no seu select, sendo 3 linhas com os dados da 1ª conta e uma linha com os dados da 2ª conta. so que os dados dos grupos serão diferentes.
2 - Pode estar ocorrendo a mesma situação anterior so que ao inves de uma conta com varios grupos, o que pode estar acontecendo é um grupo ter varios subgrupos.
Verifique esse pontos, caso for um desses casos, sua query não está errada. Qualquer coisa é só perguntar. Flw !!
GOSTEI 0