![]() |
Datenbank: MySQL • Version: 5.1 • Zugriff über: SQLDirect
SUM aus zwei Tablellen
Hi,
ich brauch von euch mal fix ein kleine Hilfe. Ich muss eine Summenbildung nebst Sortierung über 2 Tabellen abfragen. Beiden Tabellen enthalten Teilweise gleiche Felder, und auch nur die sollen abgefragt werden. Beispiel:
Code:
Wie gesagt, nur ein Beispiel. Ich will jetzt beide Tabelle in einer Abfrage zusammenfassen und
Tabelle1:
Felder: Name Vorname Netto Lieferscheinnummer Rechnungsnummer Tabelle 2: Felder: Firma Kundennummer Name Vorname Kosten Lieferkosten Dauer
Code:
(Also von der Tabelle1 das Feld Netto und von der Tabelle2 das Feld Kosten) mittels
SUM(Netto / Kosten)
Code:
und ein
Group by Name, Vorname
Code:
fertig aufbereitete Daten erhalten. Die anderen Felder der beiden Tabellen werden nicht benötigt, und brauchen auch nicht berücksichtigt werden.
Order by Name, Vorname
Ich denke schon, dass das geht. Nur weiß ich nicht wie. Und leider habe ich nur bis 13:00 Uhr zeit, da der Kunde die Daten bis dahin benötigt. Kann mir jemand ein kleines Beispiel dafür nennen? |
AW: SUM aus zwei Tablellen
Aus der Hüfte: eine UNION beider Tabellen als Subselect bilden und davon dann die Summe errechnen.
|
AW: SUM aus zwei Tablellen
Zitat:
|
AW: SUM aus zwei Tablellen
Du musst nur dafür sorgen, dass sie gleich heissen ( Alias)
|
AW: SUM aus zwei Tablellen
Wenn ich das z.B. so mache:
Code:
Dann kriege ich nur die Zeilen des zweiten Select's. (Feldnamen sind jetzt andere, als oben).
SELECT Datum, lieferant, lieferantname, Netto as Gewicht, Artikelname as Artikel FROM gm.mobilwiegedaten
where year(datum)=2015 and month(Datum)=3 union all Select Datum, lieferant, lieferantname, gewicht, artikel from gm.wiegungen where year(datum)=2015 and month(Datum)=3 order by lieferant; |
AW: SUM aus zwei Tablellen
Sind die Typen gleich?
Entferne mal das Union und führe nur den ersten Teil der Abfrage ( mit Aliasen) aus. liefert der das gewünschte (Teil-)Ergebnis? |
AW: SUM aus zwei Tablellen
Alles klar. Funktioniert. Vielen Dank.
|
AW: SUM aus zwei Tablellen
Aber wie könnte ich jetzt in der Ergebnistabelle die Summenbildung machen? Wenn ich's in den einzelnen Select's mache, nützt es mir ja nichts.
|
AW: SUM aus zwei Tablellen
Mit einer derived Table
Zitat:
|
AW: SUM aus zwei Tablellen
sum(netto/kosten) ergibt für mich keinen Sinn
das sollte wohl sum(netto)/sum(kosten) heissen und dann einfach select t3.Name,t3.Vorname,(select sum(t1.netto) from tabelle1 as t1 where ??)/(select sum(t2.kosten) from tabelle2 as t2 where ??)) from Tabelle1 as t3 Group by 1,2 order by 1,2 die ?? müssen angepasst werden , z.b where t1.vorname=t3.vorname and t1.name=t3.name je nach Tabellenstruktur |
AW: SUM aus zwei Tablellen
Ich denke, bei SUM(netto/kosten) ist die Summe aus netto von Tabelle1 und kosten von tabelle2 gemeint. Also
Zitat:
|
AW: SUM aus zwei Tablellen
Vorsichtshalber würde ich die Tabellen aber mit UNION ALL zusammenmischen, um das Ergebnis nicht zu verfälschen.
|
AW: SUM aus zwei Tablellen
Zitat:
Okay, soweit funktioniert es auch super. Vielen Dank ihr habt mir sehr geholfen, und ich konnte meinen Kunden doch noch zufriedenstellen. Warum ist das mit UNION und UNION ALL überhaupt so? Der Sinn dahinter ist mir noch nicht ganz klar geworden. |
AW: SUM aus zwei Tablellen
Union ist DISTINCT über alle Teile
|
AW: SUM aus zwei Tablellen
Vermutlich hat sich jemand gedacht, dass man eben entscheiden können soll, ob doppelte Datensätze gelistet werden sollen oder nicht. Und der Normalfall wurde dann eben als "nicht listen" festgelegt, weil in den meisten Fällen sinnvoll. Das ist aber komplett spekuliert, vielleicht gibt es auch eher technische Gründe dafür.
|
AW: SUM aus zwei Tablellen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz