MySQL zwei Tabellen verknüpfen und Spaltenwerte hinzufügen

stimmen
1

Mein Wissen von MySQL ist nicht sehr in die Tiefe. Wenn ich zwei Tabellen, die wie folgt beispielsweise aussehen:

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

Wie trete ich sie in einer Abfrage nach ihrem Datum und haben die Summe von table1.v1 und table2.v1 und haben auch die Summe von table1.v3 und table2.v3? V2 sollte ignoriert werden.

Veröffentlicht am 10/05/2010 um 17:00
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
6

Sie können folgendes tun:

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

Und wenn Sie die gesamte Summe der beiden Spalten möchten, können Sie auch tun, wie folgt:

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

Testfall:

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

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

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

Erstes Abfrage-Ergebnis:

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

Zweites Abfrageer:

+--------+--------+
| v1_sum | v3_sum |
+--------+--------+
|    189 |    209 |
+--------+--------+
Beantwortet am 10/05/2010 um 17:05
quelle vom benutzer

stimmen
0

Tabelle corse (id int (11), CNAME VARCHAR (10), schaffen
Cdet VARCHAR (10));

erstellen Sie dann eine andere Tabelle

Tabelle Bolzen (id int (11), schaffen
sname VARCHAR (10),
Ssub VARCHAR (10)
);

und dann Primärschlüssel auf dem Tisch Stud hinzufügen

alter table Bolzenprimärschlüssel (ID) hinzu;

und dann angewendet Fremdschlüssel auf corse

alter table corse Fremdschlüssel (id) Referenzen Stud (id) hinzufügen;

das ist es letzten und letzten Schritt

select s.id, s.sname, c.cname, c.cdet von Bolzen s corse co kommen n = s.id c.id;

Beantwortet am 27/05/2014 um 04:35
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more