Jump to content
Sign in to follow this  
N3lson

[Resolvido] Query 2 tabelas (dados cruzados)

Recommended Posts

N3lson

Bom dia, estou a tentar fazer o seguinte:

tenho 2 tabelas - atletas e presencas

A tabela atletas tem os dados do atleta( nome, morada....)

A tabela presencas tem o atleta_id, data, e val(presença)

e gostaria de fazer uma query que ligasse as 2 de forma a mostrar os atletas mais assíduos

tab.presencas (atleta_id, data, val)

5 | 1.1.2013 | 1

5 | 4.1.2013 | 1

2 | 1.1.2013 | 1

Agora como fazer para mostrar o nome do atleta id=5 da tabela atletas contando a soma de presencas.val de 2 presenças?

Eu tenho assim

SELECT atletas.id, atletas.nome,
		  presencas.atleta_id, presencas.val
FROM atletas
INNER JOIN presencas
ON atletas.id=presencas.atleta_id

Se fizer o SUM(presencas.val) as val vai somar tudo independente do atleta_id, mas eu queria distinto

atleta_id 5 = 2 presenças

atleta_id 4 = 1 presença

Edited by N3lson

You can't do it, kid. But don't worry, my boy. You're not the only one. No one else can do it.

Share this post


Link to post
Share on other sites
HappyHippyHippo

http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html

 SELECT atletas.id,                     -- id do atleta
        atletas.nome,                   -- nome do atleta
        count(presencas.val) presencas  -- número de presenças do atleta
   FROM atletas INNER JOIN presencas ON atletas.id=presencas.atleta_id
GROUP BY atletas.id                      -- agrupar os registos por atleta
ORDER BY presencas DESC                  -- ordenar por ordem decrescente de presencas
  LIMIT 1                               -- limitar ao atleta com mais presenças

nota : este código descarta atletas com o mesmo número de presenças que o atleta retornado


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

Share this post


Link to post
Share on other sites
N3lson

Eu pretendia que mostrasse 5 , mesmo que tivesse mesmo nº de presenças.

Coloquei o código que colocaste mas não soma.

Aparece na mesma os valores 1 1 de diferentes users mas não soma o 1+1 do user 5

Nota: Alterei o Count(....) e coloquei SUM(...) as val e já dá.

Obrigado pela ajuda

Edited by N3lson

You can't do it, kid. But don't worry, my boy. You're not the only one. No one else can do it.

Share this post


Link to post
Share on other sites
HappyHippyHippo

Eu pretendia que mostrasse 5 , mesmo que tivesse mesmo nº de presenças.

Coloquei o código que colocaste mas não soma.

Aparece na mesma os valores 1 1 de diferentes users mas não soma o 1+1 do user 5

Nota: Alterei o Count(....) e coloquei SUM(...) as val e já dá.

Obrigado pela ajuda

epa ... ainda são 7 e meis da matina, nem sei o que ando a escrever

count/sum ... vai quase dar ao mesmo :D

  • Vote 1

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

Share this post


Link to post
Share on other sites
N3lson

Eu já estou up desde as 4:30 :)


You can't do it, kid. But don't worry, my boy. You're not the only one. No one else can do it.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.