Fórum Duvida: Select entre 3 tabelas com campos null #300138

20/10/2005

0

Olá.


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

Macario

Responder

Posts

20/10/2005

Firekiller

Colega, acho que você poderia usar um Left Outer Join, para substituir o Where.


Responder

Gostei + 0

20/10/2005

Macario

Ola.

Entao mas o problema é que eu não sei fazer.


Responder

Gostei + 0

20/10/2005

Firekiller

Ficaria mais ou menos assim:

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.


Responder

Gostei + 0

20/10/2005

Macario

Ola firekiller

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)


Responder

Gostei + 0

21/10/2005

Macario

Opa bom dia.

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´


Responder

Gostei + 0

21/10/2005

Macario

Opa eu consegui.

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)


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar