Fórum Consulta em mySQL #191795

30/10/2003

0

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!


Koplin

Koplin

Responder

Posts

30/10/2003

Marcelo.c

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


Responder

Gostei + 0

30/10/2003

Koplin

Deu o mesmo resultado


Responder

Gostei + 0

30/10/2003

Marcelo.c

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 .


Responder

Gostei + 0

30/10/2003

Koplin

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.


Responder

Gostei + 0

31/10/2003

Bacalhau

Koplin, como sabes não entendo nada disso. Mas poderias aplicar essa rotina na minha conta do banco?? :lol:

abração daqueles


Responder

Gostei + 0

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

Aceitar