Jump to content


Photo

Sum Anula O Distinct?


  • Faça o login para participar
1 reply to this topic

#1 She

She

    Novato no fórum

  • Usuários
  • 2 posts
  • Sexo:Não informado
  • Localidade:POs/ RS

Posted 20/08/2010, 15:11

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í..

#2 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

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)

IPB Skin By Virteq