MySQL - consulta chata

10/12/2003

1

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.


Responder

Posts

10/12/2003

Xmagno

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


Responder

25/12/2004

Fjsx

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.


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira