2017-09-29 1 views
0

Existe-t-il un moyen de sélectionner et de regrouper deux tables en même temps?Groupez deux tables en une seule requête

Ma requête:

SELECT t1.id, t1.estimated_sum_all, t1.story_point_sum_all, 
t1.time_spent, t2.id, t2.time_spent FROM 
burndown_snap_all t1, status_history_hours t2 WHERE t1.project_id = 72 
AND t2.project_id = 72 group by t1.id 

Résultats:

enter image description here

Le problème est que je voudrais groupe aussi la deuxième table ((status_history_hours)) pour obtenir un résultat approprié dans un question.

échantillons:

J'ai deux tables:

SELECT * FROM `burndown_snap_all` WHERE project_id=72 

Résultats: enter image description here

SELECT * FROM `status_history_hours` WHERE project_id=72 

résultats:

enter image description here

Ce que je veux faire est de se joindre à la deuxième colonne du résultat (time_spent)

+0

que voulez-vous dire par "je voudrais grouper"? votre besoin d'une somme ..ou un compte.?. montrer aussi un bon échantillon de données s'il vous plaît – scaisEdge

Répondre

0

Oui, vous pouvez regrouper toutes les tables, vous devez

Mais groupe en est utilisé pour la somme fonction d'agrégation par exemple() ou le nombre() vous pouvez donc

SELECT 
    t1.id 
    , t1.estimated_sum_all 
    , t1.story_point_sum_all 
    , sum(t1.time_spent) 
    , t2.id 
    , sum(t2.time_spent) 
FROM burndown_snap_all t1 
INNER JOIN status_history_hours t2 ON t1.project_id = 72 AND t2.project_id = t1.project_id 
group by t1.id , t1.estimated_sum_all , t1.story_point_sum_all , t2.id 

autrement si ne pas besoin aggreagtion fynction et vous devez éviter valeur dupliquée, vous devez utiliser distincte et non groupe

SELECT disticnt 
    t1.id 
    , t1.estimated_sum_all 
    , t1.story_point_sum_all 
    , t1.time_spent 
    , t2.id 
    , t2.time_spent 
FROM burndown_snap_all t1 
INNER JOIN status_history_hours t2 ON t1.project_id = 72 AND t2.project_id = t1.project_id