2010-11-10 4 views
3

J'ai une table (t1)Comment puis-je joindre ces deux tables?

id score 
22  1 
35  3 
51  4 

et un autre (t2)

id score 
22  2 
35  1 
10  5 

Je veux créer le tableau suivant à l'aide d'une requête SQL.

id score 
10  5 
22  3 
35  4 
51  5 

Je dois fusionner l'ID et ajouter les scores ensemble.

Idéalement en langage SQL ANSI.

+0

@Prix, a) s'il vous plaît poster des réponses dans la section de réponse, b) des insertions lorsque vous pouvez faire selects est un mauvais conseil – Unreason

+1

est '51-5' dans la finale prévue ResultSet? – Quassnoi

+0

@Prix. Roger a déjà les données, il veut le sélectionner. il n'a pas besoin de créer une table; sélectionner à partir du courant; puis sélectionnez-en!?!?! – PerformanceDBA

Répondre

2
SELECT id, SUM(score) 
FROM (
     SELECT * 
     FROM t1 
     UNION ALL 
     SELECT * 
     FROM t2 
     ) q 
GROUP BY 
     id 
+0

+1 pour éviter élégamment de demander si les ID sont vraiment uniques – Unreason

+2

@Unreason: il est assez évident de l'exemple qu'ils ne sont pas, n'est ce pas? – Quassnoi

+0

Fonctionne comme un charme. Merci beaucoup! –

2

Utilisez un UNION ALL de combiner tous les enregistrements des deux tables en une seule et GROUP BY pour obtenir la somme pour chaque ID.

SELECT id, SUM(score) 
FROM (
      SELECT id, score 
      FROM t1  
      UNION ALL 
      SELECT id, score 
      FROM t2 
     ) t 
GROUP BY 
     t.ID 
0
create table a(id int, score int) 
create table b(id int, score int) 

insert into a values(1, 10) 
insert into a values(2, 5) 
insert into b values(1, 15) 
insert into b values(3, 20) 

select id, sum(score) from 
(select * from a 
union all 
select * from b) s 
group by id