eu tenho uma tabela de clientes, uma tabela de parceiros e uma tabela de agentes...
os parceiros trabalham para a minha empresa e tem uma id, e os agentes trabalham para os parceiros,tem uma id propria e uma id_repres que os liga aos parceiros. os clientes sao sempre dos parceiros, diretamente ou atraves de seus agentes, cada contrato com os clientes tem uma id, uma id que indica quem fechou o contrato e pode ser de um parceiro ou de um agente, e um tipo 'a' ou 'p' completando a informaçao anterior.
eu preciso contar todos os clientes (diretos e indiretos) de todos os parceiros inclusive dos parceiros que tem 0 clientes.
eu cheguei nisso mas ainda tem alguns erros:
CREATE TEMPORARY TABLE parc(
id BIGINT( 20 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
cad INT( 6 ) UNSIGNED ZEROFILL DEFAULT '000000' NOT NULL ,
valor FLOAT( 10 ) UNSIGNED NOT NULL ,
PRIMARY KEY ( id ));
CREATE TEMPORARY TABLE agent(
id BIGINT( 20 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
cad INT( 6 ) UNSIGNED ZEROFILL DEFAULT '000000' NOT NULL ,
valor FLOAT( 10 ) UNSIGNED NOT NULL ,
PRIMARY KEY ( id ));
INSERT INTO parc
SELECT p.id, COUNT( * ) AS cont, SUM(REPLACE (c.vl_contrato,',','') )
FROM cadastros AS c, parceiros AS p
WHERE (UPPER( c.indic_tipo ) = 'P' AND c.indic_id = p.id AND UPPER( c.status ) <> 'NC')
GROUP BY p.id;
INSERT INTO agent
SELECT a.id_repres, COUNT( * ) AS cont, SUM(REPLACE (c.vl_contrato,',','') )
FROM cadastros AS c, agentes AS a, parceiros p
WHERE (UPPER( c.indic_tipo ) = 'A' AND c.indic_id = a.id AND UPPER( c.status ) <> 'NC'
AND a.id_repres = p.id)
GROUP BY a.id_repres;
SELECT p.id, p.contato AS contato,
@cp := IF ((p.id = parc.id), parc.cad, 0) AS parceiro,
@ca := IF ((p.id = agent.id)and(p.id <> parc.id), agent.cad, 0) AS agentes,
(@cp + @ca) AS total
FROM parceiros AS p, parc, agent
WHERE (p.id = parc.id) OR (p.id = agent.id)
GROUP BY p.id
ORDER BY p.id
esse codigo mostra a id do parceiro e dai mostra ou os contratos diretos do parceiro ou os indiretos, nunca os dois.
Por favor me ajudem...
Publicidade
|
|
Page 1 of 1
me ajudem consulta bem complicada
#2
Posted 10 June 2005 - 01:05 AM
Não tive tempo de pensar bem em sua tabela, mas reveja seu relacionamento. A principio pode estar faltando uma tabela "Contrato". Avalie a situação de fora, pense nas perguntas q deseja fazer para o BD e q resultados deseja obter, rabisque linhas e colunas ficticias com estes resultados e depois avalie o relacionamento entre eles. Se ainda estiver em dificuldades posso dar uma olhada com calma fina de semana, ok?
Share this topic:
Page 1 of 1
Similar Topics
| Topic | Forum | Started By | Stats | Last Post Info | |
|---|---|---|---|---|---|
|
Somar valores de uma tabela do acess
Fazer consulta que tenha o somatório |
ASP |
Trunkael
|
|
|
|
MySpace lança portal para a América Latina; Brasil também terá site
|
Notícias |
Notícias
|
|
|
|
Falha do BlackBerry também afeta o Brasil
|
Notícias |
Notícias
|
|
|
|
me ajudem... diretorio virtual
um pequeno erro |
ASP |
alang
|
|
|
|
Livro de visitas flash +php
me ajudem por favor! |
Flash & ActionScript |
Mcelo
|
|
|
|
me ajudemMM!!!
|
Flash & ActionScript |
felipe_panelas
|
|
|
|
frames
por favor ajudem-me |
Flash & ActionScript |
natureza
|
|
|
|
numero q aumenta por dia
me ajudem pls |
Flash & ActionScript |
ricardovtav
|
|
Publicidade
|
|

Help













