Ir para conteúdo


Revista PROGRAMAR - Edição 45 (Maio 2014): Download já disponível! Visita também o novo website da revista.

- - - - -

Somar e ordenar dois valores de duas tabelas diferentes


  • Por favor inicie sessão para responder
4 respostas a este tópico

#1 Miudadestimida

Miudadestimida

    void

  • Membro
  • PipPip
  • 48 mensagens

Publicado 01 de Abril de 2011 - 22:07

Boa Noite a toda a comunidade do P@P.

Tenho uma pequena dúvida. Eu tenho uma tabela onde lá faço a soma e ordeno os valores de duas tabelas distintas do mysql. Exemplo:


Rank  |  Nome | Valor 1 | Valor 2 | Total
1            João       5            6           11
2            Sara       1            2            3


O valor 1 e 2 estão em tabelas separadas no mysql onde têm em comum o nome.

Sei perfeitamente somar os valores das tabelas e até ordenar por o valor 1 ou 2 a tabela. O que não sei é como faço para ordenar a tabela pelo total. Sendo que isto é um ciclo while.

Será que há algum comando especifico no mysql que me permita somar os valores de duas tabelas diferentes referente a um determinado utilizador e depois ordenar pelo total (a soma desses dois valores)?


Obrigado desde já a quem se disponibilizar ajudar.

#2 M6

M6

    [ Empreendedor | Inovador ] Pragmático

  • Moderador
  • PipPipPipPipPipPipPip
  • 6009 mensagens

Publicado 01 de Abril de 2011 - 23:03

Não compreendo quando dizes que sabes perfeitamente somar os valores das tabelas e ordenar pelos valores 1 ou 2, mas depois falas em ciclos while e referes que não sabes ordenar pelo total.
Para ordernar pelo total dessa tabela basta fazer o "order by total"...

Se queres somar os valores das tabelas e ordenar por esse valor basta (pelo que compreendi do teu modelo):
Código (SQL):
SELECT Nome, (val1 + val2) AS total
FROM tab1
INNER JOIN tab2
 ON tab1.nome = tab2.nome
ORDER BY total


#3 Miudadestimida

Miudadestimida

    void

  • Membro
  • PipPip
  • 48 mensagens

Publicado 01 de Abril de 2011 - 23:16

Ver MensagemM6, em 01 de Abril de 2011 - 23:03, disse:

Não compreendo quando dizes que sabes perfeitamente somar os valores das tabelas e ordenar pelos valores 1 ou 2, mas depois falas em ciclos while e referes que não sabes ordenar pelo total.
Para ordernar pelo total dessa tabela basta fazer o "order by total"...

Se queres somar os valores das tabelas e ordenar por esse valor basta (pelo que compreendi do teu modelo):
Código (SQL):
SELECT Nome, (val1 + val2) AS total
FROM tab1
INNER JOIN tab2
 ON tab1.nome = tab2.nome
ORDER BY total

Sim, mas está a falhar uma coisa que me esqueci de dizer também.

Tenho que contabilizar na "tab1" o número de vezes que o produto lá aparece.

Eu tenho assim:

Código :
$r = mysql_query("SELECT nome.produto, SUM(x.user) + SUM(x.produto) as total, COUNT(id.produto) as num FROM produto INNER JOIN user order by total

Mas o problema é que o COUNT(id.produto) aparece com um valor incorrecto se eu simplesmente adicionar o SUM(x.user) que tem o valor da tab2 e meter o join na tab2.

#4 M6

M6

    [ Empreendedor | Inovador ] Pragmático

  • Moderador
  • PipPipPipPipPipPipPip
  • 6009 mensagens

Publicado 02 de Abril de 2011 - 00:07

Se tens um count de fazer group by nome.produto, SUM(x.user) + SUM(x.produto)

#5 Miudadestimida

Miudadestimida

    void

  • Membro
  • PipPip
  • 48 mensagens

Publicado 04 de Abril de 2011 - 17:36

Ver MensagemM6, em 02 de Abril de 2011 - 00:07, disse:

Se tens um count de fazer group by nome.produto, SUM(x.user) + SUM(x.produto)

Muito obrigado pela ajuda.

Já consigui o que pretendia.

Mais uma vez um obrigado a toda a comunidade P@P.