Ajuda com consulta SQL
Olá pessoal,
tenho as seguintes tabelas:
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?
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
Curtidas 0
Respostas
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
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:
Onde tipo_pessoa é 0 para pessoa física e 1 para pessoa jurídica.
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
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
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
04/01/2011
Olá pessoal,
tenho as seguintes tabelas:
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...
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?
GOSTEI 0