Ajuda com consulta SQL

Delphi

04/01/2011

Olá pessoal,
tenho as seguintes tabelas:


GRUPO(cod_grupo, nome_grupo)

PESSOAFISICA(cod_pessoa, nome_pessoa)

PESSOAJURIDICA(cod_pessoa, nome_pessoa)

FINANCAS(cod_financa, tipo_pessoa, cod_pessoa, valor)



O campor tipo_pessoa tem o valor 0 para pessoa física e 1 para pessoa jurídica.

Preciso de um select que me retorne o valor total por grupo, algo assim:

Mercado 2.0000,00
Farmácias 200,00
Roupas e Acessórios xxx

Alguém pode me ajudar?
Carlos Phelippe

Carlos Phelippe

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

04/01/2011

e como é feito o relacionamento da finança com o grupo? pela estrutura que você apresentou dá pra chegar na pessoa, mas não dá pra chegar no grupo.
GOSTEI 0
Carlos Phelippe

Carlos Phelippe

04/01/2011

O grupo tem seu relacionamento com as pessoas e as pessoas com a tabela financas. Acredito que com a definição abaixo dá para entender:


GRUPO(cod_grupo, nome_grupo)

pessoa_fisica(cod_pessoa, cod_grupo, nome, cpf)

pessoa_juridica(cod_pessoa, cod_grupo, nome, cnpj)

financas(cod_financa, tipo_pessoa, cod_pessoa, valor)



Onde tipo_pessoa é 0 para pessoa física e 1 para pessoa jurídica.
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

04/01/2011

select
  grp.cod_grupo Codigo, grp.nome_grupo Nome,
  sum(fin.valor) Valor
from
  financas fin
left join
  pessoafisica pf on pf.cod_pessoa = fin.cod_pessoa and fin.tipo_pessoa = 0
left join
  pessoajuridica pj on pj.cod_pessoa = fin.cod_pessoa and fin.tipo_pessoa = 1
left join
  grupo grp on grp.cod_grupo = coalesce(pf.cod_grupo, pj.cod_grupo)
group by
  grp.cod_grupo, grp.nome_grupo
GOSTEI 0
Francisco Ricardo

Francisco Ricardo

04/01/2011

Olá pessoal,
tenho as seguintes tabelas:




GRUPO(cod_grupo, nome_grupo)

PESSOAFISICA(cod_pessoa, nome_pessoa)

PESSOAJURIDICA(cod_pessoa, nome_pessoa)

FINANCAS(cod_financa, tipo_pessoa, cod_pessoa, valor)



O campor tipo_pessoa tem o valor 0 para pessoa física e 1 para pessoa jurídica.

Preciso de um select que me retorne o valor total por grupo, algo assim:

Mercado 2.0000,00
Farmácias 200,00
Roupas e Acessórios xxx

Alguém pode me ajudar?
    Bom dia Carlos,   Afim de melhorar um pouco seu banco, pq vc nao cria apenas uma tabela PESSOA, e cria um campo TIPO (varchar[1] por exemplo -> J=juridico / F=fisico ), vc reduziria 1 tabela do seu banco e teria esse controle nao na tabela financas e sim na tabela pessoa (tabela que realmente precisa controlar o tipo de pessoa).   outra coisa é que vc tem q atrelar a PESSOA ou GRUPO, pensa no seguinte.. é uma relacao de NxM, 1xN.. ???   vc tem q otimizar seu banco antes de realmente fazer seus selects..   mas uma ideia de sql é:   vc pode usar o comando SOMA (SUM), depende do banco que utilizar, mas seria algo assim:   select sum(g.VALOR) from grupo g where g.nome_grupo = "mercado"   cara.. é só uma base pro sql tem q arrumar ele, mas antes tuas tabelas...
GOSTEI 0
POSTAR