MySQL - consulta chata
10/12/2003
0
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.
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
Curtir tópico
+ 0
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
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.
Caso não exista dados referentes na HAVER, ele te retornará NULL.
Qualquer coisa me avisa.
Falou.
Responder
Clique aqui para fazer login e interagir na Comunidade :)