2017-10-03 3 views
0

J'ai une base de données dans laquelle les utilisateurs peuvent soumettre des informations sur le nombre de pas qu'ils ont pris et j'essaye de le tirer pour faire un classement en tant que tel mais parce qu'il est soumis individuellement , ils tirent séparément.Combinaison de deux lignes mysql avec un ID en double

SELECT step_count.steps, step_count.email, logins.FirstName, logins.LastName 
    FROM step_count, logins 
    WHERE step_count.email=logins.email 

Ceci est la requête et voici comment l'information est tirée

steps | email       | FirstName | LastName 

5000 | [email protected]     | One  | onetest 
300 | [email protected]     | Two  | twotest 
200 | [email protected]     | One  | onetest 

Est-il possible de combiner les deux ensemble pour obtenir le montant total des étapes?

+2

Oui, utilisez 'SOMME()' et 'GROUP BY', consultez le manuel: https: //dev.mysql .com/doc/refman/5.7/fr/group-by-functions.html –

Répondre

1

Vous pouvez utiliser la fonction d'agrégation SUM avec la déclaration GROUP BY:

SELECT SUM(step_count.steps), 
     step_count.email, 
     logins.FirstName, 
     logins.LastName 
FROM step_count, logins 
WHERE step_count.email=logins.email 
GROUP BY step_count.email, logins.FirstName, logins.LastName 

De cette façon, vous pouvez regrouper par des champs que vous souhaitez agréger et résumer un champ numérique (étapes) pour chaque groupe.

Jetez un oeil à: mysql aggregate functions

Vous devriez aussi jeter un coup d'oeil à la déclaration INNER JOIN pour joindre des tables au lieu d'utiliser la clause WHERE.

+0

Cela a fonctionné, merci !! – Phoebe

0

Vous pouvez essayer cette requête:

SELECT 
    sum(step_count.steps) as sum_steps, 
    step_count.email, 
    logins.FirstName, 
    logins.LastName 
FROM 
    step_count 
    inner join logins on 
     step_count.email=logins.email 
group by 
    step_count.email, 
    logins.FirstName, 
    logins.LastName