Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde amigos, estou num projeto aqui, e estou numa dúvida em relação a como fazer a soma de dois selects SUM(), meio complicado de entender né? Vamos ao código:
SELECT SUM(gols1)
FROM partida
WHERE sel1=5
UNION
SELECT SUM(gols2)
FROM partida
WHERE sel2=5
Como vocês podem ver, utilizando UNION, o codigo retorna o select com uma coluna e duas linhas, queria saber como faço para somar o valor retornado por esses dois selects.Grande Motta!!
Obrigado por me mostrar a solução, foi de grande ajuda!!
Mas acabei discubrindo que utilizando a função UNION, não vai servir para o meu propósito.
Primeiro deixa eu explicar minha estrutura.
Tenho uma tabela de PARTIDA, onde tenho o campo GOLS1 e GOLS2 que marca justamente o placar de cada partida (Ex: 2x1, 1x0, 0x0). Nessa mesma tabela tenho os campos SEL1 e SEL2 que corresponde as seleções que estão disputando a partida. SEL1 esta associado a GOLS1 e SEL2 esta associada a SEL2, deu pra entender?
Preciso de duas consultas:
1) Uma consulta que me retorne a quantidade de gols feitos de uma seleção.
Tentei essa consulta:
select sum(g) g
from
(
SELECT SUM(gols1) g
FROM partida
WHERE sel1=5
UNION
SELECT
SUM(gols2)
FROM partida
WHERE sel2=5
) tabela_virtual
2) Uma consulta que me retorne a quantidade de vitórias e empates de uma seleção.
Tentei essa consulta:
SELECT COUNT(id)
FROM partida
WHERE gols1 > gols2 AND sel1=5
UNION
SELECT COUNT(id)
FROM partida
WHERE gols2 > gols1 AND sel2=5
As duas não estão resolvendo pelo mesmo motivo, a função UNION faz o que a operação de união faz de fato, rs, por exemplo, se em duas partidas, a seleção buscada tiver feito 2 gols, a consulta retorna 2 e não 4 como eu preciso, deu pra entender?
Pode me dar uma ajuda para solucionar o caso?
Consegui resolver o problema das consultas utilizando UNION ALL, que retorna todas as linhas sem comparar e sem eliminar duplicatas, ou seja, simplesmente puxa todas as informações do select.
Obrigado mesmo assim.
Problem solved! :)
Resolvido ?!
Uma solucão
select sum(g) g
from
(
SELECT SUM(gols1) g
FROM partida
WHERE sel1=5
UNION
SELECT
SUM(gols2)
FROM partida
WHERE sel2=5
) tabela_virtual