2010-05-10 14 views
1

Mes connaissances de MySQL ne sont pas très en profondeur. Si j'ai deux tables par exemple ressembler à ceci:MySQL joindre deux tables et ajouter des valeurs de colonne

Table1 
Date  v1 v2 v3 
05/01/2010 26 abc 45 
05/02/2010 31 def 25 
05/03/2010 50 ghi 46 

Table2 
Date  v1 v2 v3 
05/01/2010 42 jkl 15 
05/02/2010 28 mno 14 
05/03/2010 12 pqr 64 

Comment puis-je les rejoindre dans une requête par leur date et ont la somme des table1.v1 et table2.v1 et ont également la somme de table1. v3 et table2.v3? V2 devrait être ignoré.

Répondre

6

Vous pouvez effectuer les opérations suivantes:

SELECT t1.date, t1.v1 + t2.v1 AS v1_sum, 
      t1.v3 + t2.v3 AS v3_sum 
FROM  table1 t1 
JOIN  table2 t2 ON (t1.date = t2.date); 

Et si vous voulez l'ensemble total des deux colonnes, vous pouvez aussi faire comme suit:

SELECT SUM(t1.v1 + t2.v1) AS v1_sum, 
      SUM(t1.v3 + t2.v3) AS v3_sum 
FROM  table1 t1 
JOIN  table2 t2 ON (t1.date = t2.date); 

Cas de test:

CREATE TABLE table1 (`date` date, `v1` int, `v3` int); 
CREATE TABLE table2 (`date` date, `v1` int, `v3` int); 

INSERT INTO table1 VALUES ('2010-05-01', 26, 45); 
INSERT INTO table1 VALUES ('2010-05-02', 31, 25); 
INSERT INTO table1 VALUES ('2010-05-03', 50, 46); 

INSERT INTO table2 VALUES ('2010-05-01', 42, 15); 
INSERT INTO table2 VALUES ('2010-05-02', 28, 14); 
INSERT INTO table2 VALUES ('2010-05-03', 12, 64); 

Premier résultat de la requête:

+------------+--------+--------+ 
| date  | v1_sum | v3_sum | 
+------------+--------+--------+ 
| 2010-05-01 |  68 |  60 | 
| 2010-05-02 |  59 |  39 | 
| 2010-05-03 |  62 | 110 | 
+------------+--------+--------+ 

deuxième résultat de la requête:

+--------+--------+ 
| v1_sum | v3_sum | 
+--------+--------+ 
| 189 | 209 | 
+--------+--------+ 
0

créer la table corse ( id int (11), CNAME varchar (10),
CDET varchar (10) );

puis créer une autre table

créer la table goujon ( id int (11),
sname varchar (10),
ssub varchar (10)
);

, puis ajouter la clé primaire sur la table stud

stud alter table ajouter la clé primaire (id);

puis appliquée clé étrangère sur corse

alter table ajouter clé étrangère corse références (id) goujon (id);

thats it dernière étape et finale

select s.id, S.sname, c.cname, c.cdet du goujon de jointure corse c o n s.id = c.id;