![]() |
AW: Select mit Summe über Tabellen mit Join
Select
t1.Lagerplatz, (select sum(t2.Preis) from tabelle2 t2 where t2.IDSchrank = t1.ID) as Preis from Tabelle1 t1 |
AW: Select mit Summe über Tabellen mit Join
Zitat:
Ein klassisches Problem bei Outer Joins ist das Ergänzen von Kriterien im WHERE auf der Outer Seite. Damit zerstört man den Outer Charakter des Joins und erhält das Ergebnis eines Full Joins (also keine Leerwerte). Vielleicht ist ja das Statement von IBExpert schneller. Das hängt aber durchaus mit Indizierung und Mengenverhältnissen der Tabellen zusammen. Wenn Du mehr verrätst, kann man das sicher eher prognostizieren. Vielleicht hilft auch die Ausgabe des Query Plans beim Tuning. |
AW: Select mit Summe über Tabellen mit Join
Ich würde mal etwas anderes vorschlagen
Man macht erstmal ein SQL, welches davon ausgeht, dass in keinem Lagerplatz etwas ist
Code:
Dazu ein SQL, welches zählt, was alles da ist
SELECT 0 AS Total, Zähler AS Id FROM Tabelle1
Code:
Diese beiden SQLs mit einem UNION zusammenführen und davon dann ein SUM bilden und dann noch den Lagerplatznamen holen über ein JOIN
SELECT SUM(Preis) AS Total, IdSchrank AS Id FROM Tabelle2 GROUP BY IdSchrank
Code:
Viel Spass
SELECT SUM(A.Total) AS Total, A.Id, C.Lagerplatz
FROM ( SELECT 0 AS Total, Zähler AS Id FROM Tabelle1 UNION SELECT SUM(Preis) AS Total, IdSchrank AS Id FROM Tabelle2 GROUP BY IdSchrank ) A LEFT JOIN Tabelle1 C ON (A.Id=C.id) GROUP BY A.Id, C.Lagerplatz |
AW: Select mit Summe über Tabellen mit Join
Gute Idee. Eine ähnliche Möglichkeit wäre:
SQL-Code:
Gruß
SELECT max(A.Total) AS Total, A.Id, C.Lagerplatz
FROM ( SELECT 0 AS Total, Zähler AS Id FROM Tabelle1 UNION SELECT SUM(Preis) AS Total, IdSchrank AS Id FROM Tabelle2 GROUP BY IdSchrank ) A LEFT JOIN Tabelle1 C ON (A.Id=C.id) GROUP BY A.Id, C.Lagerplatz K-H |
AW: Select mit Summe über Tabellen mit Join
Zitat:
...und meine war die langsamste :shock: (aber alle funktionieren) @SinSpin: "IsNull", "IfNull" und "Coalesce" hat jeweils die gleiche Funktion. "Coalesce" ist aber SQL-Standard, die anderen beiden sind herstellerspezifisch. |
AW: Select mit Summe über Tabellen mit Join
Zitat:
Es kommt m.E. sehr auf das Mengenverhältnis von T1 zu T2 an. Je nach absoluten Zahlen dürfte auch ein Index einen großen Unterschied machen. Man kann vielleicht aus Anwendungssicht hier sagen, ok, soviel Schränke hat kein Mensch, erst Recht nicht so viel Kleber. Also alles relativ... P.S.: das eigentlich Interessante ist doch, dass bei Tanja nur die Variante von Frickler läuft. |
AW: Select mit Summe über Tabellen mit Join
Zitat:
P.S.: laut ![]()
Code:
...und auch das ist viel schneller als die CTE.
select t1.lagerplatz, s.summe
from tabelle1 t1 left join (select idschrank, sum(preis) as summe from tabelle2 group by idschrank) s on t1.ZAEHLER = s.idschrank |
AW: Select mit Summe über Tabellen mit Join
Zitat:
|
AW: Select mit Summe über Tabellen mit Join
Danke an alle die mir hier geholfen haben. Das Problem ist nun beseitigt worden. Der Secet von @IBExpert macht genau das was er soll und das ganze auch noch super, super schnell.
Ach so falles es jemand hier interesier. Die Mengen von T1 sind kein und die Mengen von T2 sind groß. Tanjs |
AW: Select mit Summe über Tabellen mit Join
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04: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-2025 by Thomas Breitkreuz