MySQL - consulta chata

Delphi

10/12/2003

Saudações!

Veja a consulta abaixo:

SELECT V.NUMSEQ AS VENDA,H.VALOR,C.NUMSEQ, C.NOME, V.PAGO, V.DATA AS DTVENDA, V.PRODUTO, P.NOME AS DESCRICAO, V.PRECO, V.QUANTIDADE, V.VALOR, V.VALORPAGO, V.DATAPAGO FROM CLIENTEF C LEFT JOIN VENDA V ON V.CLIENTE = C.NUMSEQ LEFT JOIN ESTOQUEF P ON P.NUMSEQ = V.PRODUTO LEFT JOIN HAVER H ON H.CLIENTE = C.NUMSEQ WHERE C.NUMSEQ = 10418 ORDER BY V.DATA

Com isto, to tentando unir 3 tabelas
Preciso trazer de um cliente as suas compras (tabela venda) o nome do produto (ligado pela tabela venda) e de uma terceira tabela (haver) as possiveis entradas de crédito para este cliente. Esta última não tem relação com venda. Só com cliente. Entretanto, se lanço os comando para buscar haver ocorre n repetiçoes de todos os dados.
O q quero, é que se houver haver em uma data em q não houve venda os campos referentes a venda fiquem em branco e vice-versa, ou seja: se não houver haver os campos correspondentes fiquem em branco.

exemplo simplificado

cliente datavenda datahaver venda haver
0001 01/01/2000 001
0001 10/01/2000 005

Preciso disso, para montar uma grade para consulta de histórico

Uso MySQl sob Windows. Já tentei Join, InnerJoin, sem resultados.
Não sei se UNION funcionaria, não sei fazer.

Se alguem puder dar uma dica, agradeço.


Koplin

Koplin

Curtidas 0

Respostas

Xmagno

Xmagno

10/12/2003

Nao conheco muito de mysql, mas me parece mais simples vc inserir em uma tabela temporaria, os dados do cliente, com as vendas e deixar os campos referentes a tabela haver zerados.
Depois vc insere nessa mesma tabela os dados da tabela haver, nos campos q ficaram zerado na operacao anterior.

depois vc da um select nessa tabela q vc criou agrupando (ou somando) de acordo com sua necessidade.

[]´s
xMagno


GOSTEI 0
Fjsx

Fjsx

10/12/2003

Estude sobre a instrução LEFT OUTER JOIN.
Caso não exista dados referentes na HAVER, ele te retornará NULL.

Qualquer coisa me avisa.

Falou.


GOSTEI 0
POSTAR