none
porque este Select nao funciona? RRS feed

  • Pergunta

  • Eu tenho este select com SUM.

    o WHERE não está funcionando.

    o GROUP BY está ficando correto, porem o SUM não respeita o WHERE

    SELECT DISTINCT C1.supervisor, SUM(Valor_Transacao) AS total FROM tb_combustivel C1, tb_usuario C2 WHERE C1.supervisor=C2.supervisor GROUP BY C1.supervisor;

    utilizo windows form C# e MYSQL.

    Obrigado

    quinta-feira, 18 de junho de 2015 22:39

Respostas

  • Marcos,

         Normalmente se voce retirar o where o resultado tem que ser diferente porque vai retornar todos os valores de todos os registros.

          Outra pergunta é se o DISTINCT é realmente necessário. Voce não pode ter duas transações diferentes com o mesmo valor ?

           E quando for relacionar duas tabelas de sempre preferencia para realizar o JOIN usando o padrão SQL/ANSI que deve por definição funcionar em todos os gerenciadores de banco de dados, Isso vai ser importante quando voce tiver relacionando varias tabelas ao mesmo tempo.

    SELECT 
    	C1.supervisor, 
    	SUM(C2.Valor_Transacao) AS total 
    FROM 	tb_combustivel C1 JOIN
         	tb_usuario C2 ON (C1.supervisor = C2.supervisor)
    GROUP BY 
    	C1.supervisor;


         


    Microsoft Community Contributor

    • Sugerido como Resposta João Otávio A quarta-feira, 24 de junho de 2015 13:53
    • Marcado como Resposta Cristopher C I_ quarta-feira, 24 de junho de 2015 17:51
    quarta-feira, 24 de junho de 2015 13:48
    Moderador

Todas as Respostas

  • Era pra estar correto.
    SELECT DISTINCT 
         C1.supervisor, 
         SUM(C2.Valor_Transacao) AS total 
    FROM tb_combustivel C1, 
         tb_usuario C2 ]
    WHERE C1.supervisor = C2.supervisor 
    GROUP BY C1.supervisor;


    Natan

    quinta-feira, 18 de junho de 2015 23:02
  • Concordo Natan

    Porem o resultado não condiz com a realidade.

    Eliminando o WHERE o resultado apresentado é outro.

    quinta-feira, 18 de junho de 2015 23:22
  • existe a coluna Valor_Transacao nas duas tabelas?

    Natan

    quinta-feira, 18 de junho de 2015 23:33
  • não.

    somente em C1

    o C2 criei para buscar somente o supervisor que consta no C2 e no C1

    estou verificando o campo Valor_transacao

    está no formato numero e vou mudar para double e ver o resultado

    quinta-feira, 18 de junho de 2015 23:44
  • Boa tarde Marcos.

    Como foi o resultado?

    Abraços

    terça-feira, 23 de junho de 2015 21:01
  • Marcos,

         Normalmente se voce retirar o where o resultado tem que ser diferente porque vai retornar todos os valores de todos os registros.

          Outra pergunta é se o DISTINCT é realmente necessário. Voce não pode ter duas transações diferentes com o mesmo valor ?

           E quando for relacionar duas tabelas de sempre preferencia para realizar o JOIN usando o padrão SQL/ANSI que deve por definição funcionar em todos os gerenciadores de banco de dados, Isso vai ser importante quando voce tiver relacionando varias tabelas ao mesmo tempo.

    SELECT 
    	C1.supervisor, 
    	SUM(C2.Valor_Transacao) AS total 
    FROM 	tb_combustivel C1 JOIN
         	tb_usuario C2 ON (C1.supervisor = C2.supervisor)
    GROUP BY 
    	C1.supervisor;


         


    Microsoft Community Contributor

    • Sugerido como Resposta João Otávio A quarta-feira, 24 de junho de 2015 13:53
    • Marcado como Resposta Cristopher C I_ quarta-feira, 24 de junho de 2015 17:51
    quarta-feira, 24 de junho de 2015 13:48
    Moderador