Olá Galera
Estou fazendo uma pesquisa no BD com BETWEEN e SUM faço tb DISTINCT de um campo pois por acidente tenho dados repetidos, eu ja corrigi os dados não vao mais se repetir, mas como são muitos dados qro controlar pelo select e não ter q excluir o repetidos agora. Só que ao fazer a pesquisa e colocar o group by ele repeti a data mesmo com o distinct, a pesquisa é a seguinte:
SELECT DISTINCT(cv.data) ,a.name,SUM(c.pedidos) FROM tab1 as cv
LEFT JOIN tab2 as a ON a.controle_Id=cv.id
LEFT JOIN tab2_has_tab3 AS b ON b.Campaign_id = a.id
LEFT JOIN tab3 AS c ON c.id = b.CampaignStats_id
WHERE a.name="Nome de pesquisa"
and c.startDate BETWEEN "2010-08-01" AND "2010-08-15"
GROUP BY a.name ORDER BY c.startDate
O que acontece é que eu tenho a data do dia "2010-08-13" duas vezes, quando eu faço esta pesquisa sem o GROUP BY e SUM(c.pedidos), não é listada a data repetida duas vezes mas é só eu colocar GROUP BY e SUM(c.pedidos), que é somada a data repetida. Alguem pode me dizer onde estou errando???
RESUMINDO: eu quero mesmo é que some um registro por dia quando o a.name="Nome de pesquisa".
Não pode ser impossível.
Ajudinha aí..

Sum Anula O Distinct?
Started By She, 20/08/2010, 15:11
1 reply to this topic
#1
Posted 20/08/2010, 15:11
#2
Posted 20/08/2010, 19:02
Precisa agrupar pela data também. O DISTINCT não funciona como você está achando. Faça assim:
SELECT cv.data, a.name, SUM(c.pedidos) FROM tab1 as cv
LEFT JOIN tab2 as a ON a.controle_Id=cv.id
LEFT JOIN tab2_has_tab3 AS b ON b.Campaign_id = a.id
LEFT JOIN tab3 AS c ON c.id = b.CampaignStats_id
WHERE a.name="Nome de pesquisa"
and c.startDate BETWEEN "2010-08-01" AND "2010-08-15"
GROUP BY cv.data, a.name ORDER BY c.startDate
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)