Ir para o conteúdo
kenny

[Resolvido] Dúvida com Soma

Mensagens Recomendadas

kenny

Boa Noite pessoal.

Eu estou com uma duvida que é tenho 3 tabelas completamente iguais (mesma estrutura).

Ou seja eu queria 2 campos das 3 tabelas e somar um dos campos que é igual nas três.

Esse campo é um timestamp.

Eu tentei assim:

SELECT campo1, campo2, SUM(connected) FROM $table, $table1, $table2 WHERE steam LIKE '%STEAM_%' ORDER BY SUM(connected) DESC "

Eu sou um bastante verde e tentei fazer umas pesquisas e nao sei se terei só de usar o SUM ou terei mesmo que o INNER JOIN.

Podem me ajudar?

Obrigado e Cumprimentos

Editado por kenny

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
kenny

Boa Tarde pessoal se calhar expliquei me mal.

Eu tenho 3 tabelas com varios campos mas a estrutura exatamente igual e uma query é assim:

SELECT nome, id, connected FROM $table WHERE steam LIKE '%STEAM_%' ORDER BY connected DESC

E agora eu queria selecionar a $tabela, $tabela1, $tabela2 e somar o campo "connected" das 3 tabelas para depois me retornar o total de cada nome e id.

Será que alguém me pode ajudar?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

a tua questão é um bocado estranha podes dar um exemplo concreto ?

apresenta um exemplo com a info das 3 tabelas e um resultado exemplo da query que pretendes


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
kenny

Bem Happy para nao estar aqui a postar os campos das tabelas todas é assim eu tenho as seguintes tabelas:

Tabela #1

+----------+-------+-------+-------+

| id steam | nome | connected |

+----------+--------+-------+------+

| Steam | José | 123452 |

| Steam | Luis | 12789 |

+---------+------+-------+---------+

Tabela #2

+----------+-------+-------+-------+

| id steam | nome | connected |

+----------+--------+-------+------+

| Steam | José | 1452 |

| Steam | Luis | 67493 |

+---------+------+-------+---------+

Tabela #3

+----------+-------+-------+-------+

| id steam | nome | connected |

+----------+--------+-------+------+

| Steam | José | 25469 |

| Steam | Luis | 54698 |

+---------+------+-------+---------+

Agora eu queria somar os valores do connected nas tabelas todas e depois apresentar algo assim:

1º José 150373 ( 123452+ 1452 + 25469 )

2º Luis 134980 ( 12789 + 67493 + 54698 )

etc etc

Nao quero exibir os valores que estão entre parênteses.

Eu só queria construir a query só nao sei a melhor forma de o fazer se só o SUM chega ou tenho que usar o INNER JOIN.

Editado por kenny

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

SELECT nome,
SUM(connected) AS Total
FROM ( SELECT nome,
connected
FROM table1
WHERE steam LIKE '%STEAM_%'
UNION ALL SELECT nome,
connected
FROM table2
WHERE steam LIKE '%STEAM_%'
UNION ALL SELECT nome,
connected
FROM table3
WHERE steam LIKE '%STEAM_%')
GROUP BY nome DESC
[/Code]


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

falta, mas eu escrevi o SQL de cabeça e tu com o erro deverias saber onde está o erro ...


SELECT nome,
SUM(connected) AS Total
FROM ( SELECT nome,
connected
FROM table1
WHERE steam LIKE '%STEAM_%'
UNION ALL SELECT nome,
connected
FROM table2
WHERE steam LIKE '%STEAM_%'
UNION ALL SELECT nome,
connected
FROM table3
WHERE steam LIKE '%STEAM_%') AS my_tables
GROUP BY nome DESC
[/Code]

Editado por HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
kenny

Boas Happy

Deixei assim :


$items_per_page = 10;

("SELECT name, steam,
	 SUM(connected) AS Total
FROM (		 SELECT name, steam,
					 connected
				 FROM $table
				 WHERE steam LIKE '%STEAM_%'
	 UNION ALL SELECT name, steam,
					 connected
				 FROM $table1
				 WHERE steam LIKE '%STEAM_%'
	 UNION ALL SELECT name, steam,
					 connected
				 FROM $table2
				 WHERE steam LIKE '%STEAM_%') AS $table
GROUP BY connected DESC LIMIT ".$_GET['rowstart'].",$items_per_page");

Mas por exemplo tenho um user que me aparece

+----------+-------+-------+-------+

| id steam | nome | connected |

+----------+--------+-------+------+

| Steam | str | 137231 |

+---------+------+-------+---------+

E mais a frente noutra página o mesmo:

+----------+-------+-------+-------+

| id steam | nome | connected |

+----------+--------+-------+------+

| Steam | str | 21524 |

+---------+------+-------+---------+

Em vês de me aparecer só uma vez e:

+----------+-------+-------+-------+

| id steam | nome | connected |

+----------+--------+-------+------+

| Steam | str | 158755 |

+---------+------+-------+---------+

A soma dos dois.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
kenny

No teu está o "nome" e eu pus o "connected" para me ordenar o que tem mais para o que tem menos.

Porque se deixar o "nome" aleatório e não ordena.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

No teu está o "nome" e eu pus o "connected" para me ordenar o que tem mais para o que tem menos.

Porque se deixar o "nome" aleatório e não ordena.

e qual foi o nome que dei ao campo somado ?


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.