SQL (MS Access): Ergebnis zweier Abfragen dividieren

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/sql-ms-access-ergebnis-zweier-abfragen-dividieren_250607/page_1 - zur Vollversion wechseln!


kleinerChemiker schrieb am 19.01.2018 um 09:21

Kann ich das Ergebnis zweier Abfragen (1 und 2) dividieren? Ich bekomme bei beiden 3 Spalten (A, B, C). Ich möchte C dividieren, wo A und B die selben Werte sind. Die Kombination A/B kommt in beiden Abfragen jeweils nur einmal vor.

A ist eine Jahreszahl
B ist ein Namen
C ist eine Zahl (Menge)

ICh hätte gerne als Ergebnis: A, B, C2/C1

tia


p1perAT schrieb am 19.01.2018 um 10:08

Suchst du vll. nach DLookup()? Damit solltest du zumindest zu den jeweils passenden Werten zum Dividieren kommen aus den zwei Abfragen/Tabellen.


kleinerChemiker schrieb am 19.01.2018 um 10:27

Die Werte zu bekommen ist nicht das Problem. Sind zwei etwas längere SQL Abfragen. Ich weiß nur nicht, wie ich das Ergebnis dieser 2 Abfragen dividiere. Das Ergebnis schaut etwa so aus:

Code:
Abfrage 1:
A		B		C
2001		Anton		2
2001		Berta		5
2002		Anton		3
2002		Berta		4

Abfrage 2:
A		B		C
2001		Anton		6
2001		Berta		9
2002		Anton		12
2002		Berta		16

Nun will ich die Ergebnisse (also Spalte C) aus Abfrage 1 und 2 dividieren.


mat schrieb am 19.01.2018 um 11:17

Sollte mit Sub-Selects möglich sein.

Allerdings gibt es eine meist performantere Alternative, wenn die Anzahl der Reihen und deren Datenmenge daduch nicht dramatisch höher ist: Die Division nach der Abfrage im Code durchführen, falls möglich. SQL ist nicht zwangsweise die schnellste Methode, um Datensätze aufzubereiten.


freezer90 schrieb am 19.01.2018 um 11:36

Code: SQL
SELECT 
  Query1.A
  , Query1.B
  , Query2.C/Query1.C
FROM (/*Abfrage1*/) AS Query1
INNER JOIN (/*Abfrage2*/) AS Query2 ON Query1.A = Query2.A AND Query1.B = Query2.B

So irgendwie ... vorrausgesetzt, du hast die selbe Anzahl an Zeilen auf beiden Seiten und du kannst sicher über Jahr und Name einen JOIN machen. Wär besser wenn du irgendwas eindeutiges hättest. Schön isses so nicht .....
Sind die Abfragen so groß, dass du sie nicht von Haus aus gemeinsam machen könntest?

Wie mat schon sagte gäbs vermutlich schönere Wege das zu lösen ... aber du hast ja nach SQL gefragt :)


Denne schrieb am 19.01.2018 um 12:13

Was spricht dagegen die Division nicht in SQL aber im Code selbst auszuführen, wie mat schon angesprochen hat? Imho wird der Code dadurch auch wartbarer.


kleinerChemiker schrieb am 19.01.2018 um 12:44

Es spricht nichts dagegen und ich habe es auch so gelöst. Performance ist auch komplett egal. Es hat mich in erster Linie interessiert, ob und wie es möglich ist.

Die Lösung von freezer90 sieht interessant aus.

Danke an alle.




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025