Fórum Duvida: Select entre 3 tabelas com campos null #300138
20/10/2005
0
Estou precisando de uma ajuda em relação a um select.
Situação:
Tenho uma tabela com a seguinte estrutura:
Tabela de Metas
TabMetas
tipo = char(1)
MesAno=char(7)
Grupo //codigo
SubGrupo//codigo
Cliente//codigo
Produto//codigo
Representante//codigo
Quantidade
Valor
A meta pode ser estabelecida da seguinte maneira:
01- Apenas por Grupo
02- Apenas por Subgrupo
03- Apenas por Cliente
04- Apenas por Produto
05- Apenas por Representante
06- Apenas por Cliente+Produto
07- Apenas por Representante+Cliente
08- Apenas por Representante+Produto
09- Apenas por Representante+Cliente+Produto
10- Apenas por Representante+Grupo
11- Apenas por Representante+Subgrupo
Em todos os casos sempre havera campos nulos, mas eu preciso trazer as descrições de cada um (cliente,produto,representante,grupo e subgrupo).
Como seria o select para este caso?
Tentei uns usando where TabMetas.Cliente = TabCli.CodCli e os outros, mas ai nao retorna nenhum registro
:roll:
Macario
Curtir tópico
+ 0Posts
20/10/2005
Firekiller
Gostei + 0
20/10/2005
Macario
Entao mas o problema é que eu não sei fazer.
Gostei + 0
20/10/2005
Firekiller
Select
A.Tipo,
A.MesAno,
B.NomeGrupo,
C.NomeCLiente
From
TabMetas A
left outer join TabGrupos B on (B.CodGrupo = A.Grupo)
left outer join TabClientes C on (C.CodCliente = A.Cliente)
Coloquei o left pois está fazendo referência a tabela mais da esquerda... ou seja, a tabela mais externa e principal, no caso desse select.
Gostei + 0
20/10/2005
Macario
Cara com a sua indicação sobre qual comando eu deveria usar (pois eu nao sabia qual deveria ser) fiz uma pesquisa e fiz um teste parcial e consegui um resultado legal, foi +/- o que voce postou agora...
qualquer coisa retorno.
Por enquanto agradeço. 8)
Gostei + 0
21/10/2005
Macario
Como posso incluir uma clausula where no codigo abaixo?
SELECT A.*,B.V2 AS DESCLI, C.V2 AS DESREP,D.A2 AS DESPRO FROM ARQMETAF A LEFT JOIN ARQCLIE B ON (A.CLIENTE=B.V1) LEFT JOIN ARQREPR C ON (A.REP=C.V1) LEFT JOIN ARQMER D ON (A.PRODUTO=D.A1)
tipo where MESREF = ´09.2005´
Gostei + 0
21/10/2005
Macario
ficou assim
SELECT A.*,B.V2 AS DESCLI, C.V2 AS DESREP,D.A2 AS DESPRO,E.NARE AS DESGRU,F.NGRU AS DESSUB FROM ARQMETAF A left join ARQCLIE B on (A.CLIENTE=B.V1) left join ARQREPR C on (A.REP=C.V1) left join ARQMER D on (A.PRODUTO=D.A1) left join ARQARE E on (A.GRUPO=E.CARE) left join ARQGRU F on (A.SUBGRUPO=F.CGRU) where MESREF = ´10.2005´
agradeço a atenção, e logo mais virei com outras duvidas, pois estou efetuando uma conversao de DBF para SQL, entao ja sabem. 8)
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)