MySQL - 2 Tabellen - 1 Summe
Hallo Forum,
ich verzweifel gerade an einem MySQL Query...
ich möchte aus 2 Spalten die sich in 2 verschiedenen Tabellen befinden, eine Summe bilden.
Tabelle1 = f53wb_addontracks2, Feld: Length
Tabelle2 = f53wb_streckenstd, Feld: Length
Diverse Versuche mit z.B.:
sind nicht erfolgreich gewesen.
Wer mag mir da helfen?
Gruß
Juergen
P.S: es wäre sehr nett, wenn die Antwort nicht zu kryptisch ausfallen würde, da ich ein Laie in Sachen MySQL bin...
ich verzweifel gerade an einem MySQL Query...
ich möchte aus 2 Spalten die sich in 2 verschiedenen Tabellen befinden, eine Summe bilden.
Tabelle1 = f53wb_addontracks2, Feld: Length
Tabelle2 = f53wb_streckenstd, Feld: Length
Diverse Versuche mit z.B.:
SELECT
SUM(f53wb_addontracks2.Length), (f53wb_streckenstd.Length)
FROM
f53wb_addontracks2, f53wb_streckenstd
sind nicht erfolgreich gewesen.
Wer mag mir da helfen?
Gruß
Juergen
P.S: es wäre sehr nett, wenn die Antwort nicht zu kryptisch ausfallen würde, da ich ein Laie in Sachen MySQL bin...
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 181024
Url: https://administrator.de/contentid/181024
Ausgedruckt am: 22.11.2024 um 10:11 Uhr
8 Kommentare
Neuester Kommentar
Diverse Versuche mit z.B.:
Was sollte da auch passieren?
Ein
FROM a,b
bildet ein Kreuzprodukt, also jede Zeile von a mal jede Zeile von b.mysql> SELECT * FROM a;
+------+
| fld |
+------+
| 1 |
| 2 |
+------+
2 rows in set (0.00 sec)
mysql> SELECT * FROM b;
+------+
| fld |
+------+
| a |
| b |
+------+
2 rows in set (0.00 sec)
mysql> SELECT * FROM a,b;
+------+------+
| fld | fld |
+------+------+
| 1 | a |
| 2 | a |
| 1 | b |
| 2 | b |
+------+------+
4 rows in set (0.00 sec)
Was willst du überhaupt?
Von zwei getrennten Tabellen völlig unabhängig die Summe berechnen?
Dann so:
SELECT
(SELECT SUM(fld) FROM a) AS col1,
(SELECT SUM(fld) FROM b) AS col2;
Hallo Juergen
ich denke was du haben willst (oder eigentlich nicht haben willst)
das würde die Summe dieser beiden Spalten bilden. ABER: Sql Datenbanken sind mengen, nicht zeilen orientiert. Mit diesem Konstrukt würdest du eine Kartesisches Produkt erzeugen. In den seltensten Fällen ist das gewünscht. Normalerweise werden Tabellen über eindeutige Werte / Schlüssel verknüpft.
Was ist das ? guggscht du hier http://de.wikipedia.org/wiki/Kartesisches_Produkt
Gruß Sam
ich denke was du haben willst (oder eigentlich nicht haben willst)
SELECT
SUM(f53wb_addontracks2.Length + f53wb_streckenstd.Length)
FROM
f53wb_addontracks2, f53wb_streckenstd
das würde die Summe dieser beiden Spalten bilden. ABER: Sql Datenbanken sind mengen, nicht zeilen orientiert. Mit diesem Konstrukt würdest du eine Kartesisches Produkt erzeugen. In den seltensten Fällen ist das gewünscht. Normalerweise werden Tabellen über eindeutige Werte / Schlüssel verknüpft.
Was ist das ? guggscht du hier http://de.wikipedia.org/wiki/Kartesisches_Produkt
Gruß Sam
Hallo Juergen,
wenn das wirklich alle Felder deiner Tabelle sind, nur über 2 einzelne Abfragen. Sobald du diese Tabellen verknüpfst, wird dein Ergebnis nicht mehr stimmen (Erklärung siehe oben).
Entweder mit 2 summen leben, oder über ein temporäre Tabelle / stored procedure lösen.
Gruß Sam
wenn das wirklich alle Felder deiner Tabelle sind, nur über 2 einzelne Abfragen. Sobald du diese Tabellen verknüpfst, wird dein Ergebnis nicht mehr stimmen (Erklärung siehe oben).
+-----------+
| Tabelle1 |
+-----------+
| 150 |
| 300 |
+-----------+
+-----------+
| Tabelle2 |
+-----------+
| 200 |
| 75 |
+-----------+
Entweder mit 2 summen leben, oder über ein temporäre Tabelle / stored procedure lösen.
Gruß Sam
Wenn dann mit Union verbinden
oder gleich
SELECT SUM(x.`sum`) FROM (
SELECT SUM(`Length`) AS 'sum' FROM `f53wb_addontracks2`
UNION
SELECT SUM(`Length`) AS 'sum' FROM `f53wb_streckenstd`
) x;
oder gleich
SELECT (SELECT SUM(`Length`) AS 'sum' FROM `f53wb_addontracks2`) + (SELECT SUM(`Length`) AS 'sum' FROM `f53wb_streckenstd`) ;
... ich sehe Du speicherst das Ergebnis in $output aber fragst $result ab:
... weiterhin gefällt mir dein Quoting nicht besonders und das SQL Ergebnis hat keinen definierten "Spaltennamen".
echo $output['summe'];
... weiterhin gefällt mir dein Quoting nicht besonders und das SQL Ergebnis hat keinen definierten "Spaltennamen".
$sql = <<<__SQL__
SELECT (SELECT SUM(`Length2`) FROM `f53wb_addontracks2`) + (SELECT SUM(`Length`) FROM `f53wb_streckenstd`) AS 'summe'
__SQL__;