Hi zusammen,
ich habe folgende 3 Tabellen mit diesem Schema:
Nr: String
Anzahl: Int
D.h. zu jeder Nummer gibt es eine Anzahl. z.B.:
5: 3 mal
2: 5 mal
12: 1 mal
usw.
Von dieser Art habe ich nun 3 Tabellen A, B und C.
Ich möchte nun die Anzahlen von A und B addieren und die von C wieder abziehen.
(Datenbank ist übrigens MySQL).
Ich suche nun nach einer Möglichkeit das ganze performant durchzuführen.
Also Bsp:
Tabelle A:
5: 3 mal
4: 1 mal
Tabelle B:
5: 2 mal
4: 1 mal
3: 2 mal
Tabelle C:
5: 1 mal
4: 2 mal
3: 2 mal
2: 1 mal
Ergebnistabelle:
5: 4 mal
4: 0 mal
3: 0 mal
2: -1 mal
Ich könnte das jetzt manuell mit Addition und Subtraktion usw. durchführen mit ein paar Joins oder ich habe mir noch folgendes überlegt:
Ich führe 2 Unions aus, wobei ich die A und B normal verknüpfe und bei C die Anzahl * (-1) nehme und dann gruppiere mit der Sum-Aggregation.
Also sowas der Form:
Select Nr, Sum (Anzahl) From A Union B Union (select Nr, (Anzahl * (-1)) FROM C) Group by Nr;
Hat jemand eine Idee, wie ich das noch effizienter lösen kann?
Gruß
Mike
ich habe folgende 3 Tabellen mit diesem Schema:
Nr: String
Anzahl: Int
D.h. zu jeder Nummer gibt es eine Anzahl. z.B.:
5: 3 mal
2: 5 mal
12: 1 mal
usw.
Von dieser Art habe ich nun 3 Tabellen A, B und C.
Ich möchte nun die Anzahlen von A und B addieren und die von C wieder abziehen.
(Datenbank ist übrigens MySQL).
Ich suche nun nach einer Möglichkeit das ganze performant durchzuführen.
Also Bsp:
Tabelle A:
5: 3 mal
4: 1 mal
Tabelle B:
5: 2 mal
4: 1 mal
3: 2 mal
Tabelle C:
5: 1 mal
4: 2 mal
3: 2 mal
2: 1 mal
Ergebnistabelle:
5: 4 mal
4: 0 mal
3: 0 mal
2: -1 mal
Ich könnte das jetzt manuell mit Addition und Subtraktion usw. durchführen mit ein paar Joins oder ich habe mir noch folgendes überlegt:
Ich führe 2 Unions aus, wobei ich die A und B normal verknüpfe und bei C die Anzahl * (-1) nehme und dann gruppiere mit der Sum-Aggregation.
Also sowas der Form:
Select Nr, Sum (Anzahl) From A Union B Union (select Nr, (Anzahl * (-1)) FROM C) Group by Nr;
Hat jemand eine Idee, wie ich das noch effizienter lösen kann?
Gruß
Mike