2010-05-10 1 views
1

Мои знания о MySQL не очень глубоки. Если у меня есть две таблицы, например, выглядят следующим образом:MySQL соединяется с двумя таблицами и добавляет значения столбцов

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 

Как я могу присоединиться к ним в запросе по дате и иметь сумму table1.v1 и table2.v1, а также иметь сумму table1. v3 и table2.v3? V2 следует игнорировать.

ответ

6

Вы можете сделать следующее:

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); 

И если вы хотите, общая совокупность обеих колонок, вы также можете сделать следующее:

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); 

Контрольный пример:

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); 

Первый запрос:

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

Второй результат запроса:

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

создать таблицу Corse ( ID INT (11), CNAME VARCHAR (10),
cdet VARCHAR (10) );

затем создать еще одну таблицу

создать таблицу шпильку ( ID INT (11),
SNAME VARCHAR (10),
ssub VARCHAR (10)
);

, а затем добавить первичный ключ таблицы шпильке

альтер таблица стад добавить первичный ключ (ID);

, а затем наносят внешний ключ на Корсике

альтер стол Corse добавить внешний ключ (ID) ссылки Stud (ID);

Вот это последний и заключительный шаг

выберите s.id, s.sname, c.cname, c.cdet из стад с Corse присоединиться к о п s.id = c.id;

Смежные вопросы