"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

SQL (MS Access): Ergebnis zweier Abfragen dividieren

kleinerChemiker 19.01.2018 - 09:21 2372 6
Posts

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4248
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

-
Registered: Sep 2009
Location: AT
Posts: 2921
Suchst du vll. nach DLookup()? Damit solltest du zumindest zu den jeweils passenden Werten zum Dividieren kommen aus den zwei Abfragen/Tabellen.

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4248
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

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25373
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

Ex SE Student
Avatar
Registered: Aug 2002
Location: Linz
Posts: 768
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

Here to stay
Avatar
Registered: Jan 2005
Location: Germany
Posts: 2801
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

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4248
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.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz