Consulta em mySQL
Saudações:
Observe a seguinte query:
SELECT C.NUMSEQ, C.NOME, SUM(H.VALOR), SUM(V.VALOR) FROM CLIENTEF C LEFT JOIN HAVER H ON H.CLIENTE=C.NUMSEQ LEFT JOIN VENDA V ON V.CLIENTE=C.NUMSEQ WHERE C.NUMSEQ=1114 AND V.PAGO=´N´ GROUP BY C.NUMSEQ, C.NOME
Tenho 6 registros em vendas que somados = 502,4
Tenho 8 registros em haver que somados = 1050
Ta retornando 4019,2 e 6300
6 x mais que o real
Obs WHERE C.NUMSEQ=1114 so esta para teste. A consulta tem que retornar todos os registros em venda com haver = null se não constar em haver.
Onde estou errando?
Obrigado!
Observe a seguinte query:
SELECT C.NUMSEQ, C.NOME, SUM(H.VALOR), SUM(V.VALOR) FROM CLIENTEF C LEFT JOIN HAVER H ON H.CLIENTE=C.NUMSEQ LEFT JOIN VENDA V ON V.CLIENTE=C.NUMSEQ WHERE C.NUMSEQ=1114 AND V.PAGO=´N´ GROUP BY C.NUMSEQ, C.NOME
Tenho 6 registros em vendas que somados = 502,4
Tenho 8 registros em haver que somados = 1050
Ta retornando 4019,2 e 6300
6 x mais que o real
Obs WHERE C.NUMSEQ=1114 so esta para teste. A consulta tem que retornar todos os registros em venda com haver = null se não constar em haver.
Onde estou errando?
Obrigado!
Koplin
Curtidas 0
Respostas
Marcelo.c
30/10/2003
Tente assim:
SELECT C.NUMSEQ, C.NOME, SUM(H.VALOR), SUM(V.VALOR) FROM CLIENTEF C LEFT JOIN (HAVER H LEFT JOIN VENDA V ON H.CLIENTE=V.CLIENTE) ON V.CLIENTE=C.NUMSEQ WHERE C.NUMSEQ=1114 AND V.PAGO=´N´ GROUP BY C.NUMSEQ, C.NOME
SELECT C.NUMSEQ, C.NOME, SUM(H.VALOR), SUM(V.VALOR) FROM CLIENTEF C LEFT JOIN (HAVER H LEFT JOIN VENDA V ON H.CLIENTE=V.CLIENTE) ON V.CLIENTE=C.NUMSEQ WHERE C.NUMSEQ=1114 AND V.PAGO=´N´ GROUP BY C.NUMSEQ, C.NOME
GOSTEI 0
Koplin
30/10/2003
Deu o mesmo resultado
GOSTEI 0
Marcelo.c
30/10/2003
Experimente utilizar a cláusula DISTINCT:
SELECT DISTINCT C.NUMSEQ ....
Aparentemente os registros estão sendo trazidos na relação vários para vários. O Distinct limita a exibição, trazendo apenas 1 registro de cada .
SELECT DISTINCT C.NUMSEQ ....
Aparentemente os registros estão sendo trazidos na relação vários para vários. O Distinct limita a exibição, trazendo apenas 1 registro de cada .
GOSTEI 0
Koplin
30/10/2003
SELECT DISTINCT C.NUMSEQ, C.NOME, SUM(H.VALOR), SUM(V.VALOR) FROM VENDA V LEFT JOIN HAVER H ON H.CLIENTE=C.NUMSEQ LEFT JOIN CLIENTEF C ON V.CLIENTE=C.NUMSEQ WHERE V.CLIENTE=C.NUMSEQ AND V.CLIENTE >=1114 AND V.PAGO=´N´ GROUP BY C.NUMSEQ, C.NOME
Acontece a mesma coisa. Se não houver registro em HAVER vem normal, se houver, soma 6x em ambas somas. Ta parecendo bug.
Acontece a mesma coisa. Se não houver registro em HAVER vem normal, se houver, soma 6x em ambas somas. Ta parecendo bug.
GOSTEI 0
Bacalhau
30/10/2003
Koplin, como sabes não entendo nada disso. Mas poderias aplicar essa rotina na minha conta do banco?? :lol:
abração daqueles
abração daqueles
GOSTEI 0