Hallo allerseits,
hab 'ne Datenbank mit folgenden drei Tabellen (sorry, das Beispiel ist bissi an 'n Haaren herbeigezogen):
Tabelle „Sportler“ (PK ist Sporler_Nr):
Sportler\_Nr | Name
-------------------------
1 | Sportler1
2 | Sportler2
Tabelle „Turniere“ (PK ist Sporler_Nr, Jahr):
Sportler\_Nr | Jahr | Anzahl\_Medaillen
--------------------------------------
1 | 2002 | 10
1 | 2003 | 8
2 | 2002 | 3
Tabelle „Medaillen“ (PK ist Sporler_Nr, Jahr):
Sportler\_Nr | Jahr | Anzahl\_Medaillen
--------------------------------------
1 | 2002 | 3
1 | 2003 | 5
2 | 2002 | 1
Die Beziehungen sind glaub ich sofort ersichtlich.
Ich möchte jetzt abfragen, an wievielen Turnieren jede® SportlerIn insgesamt teilgenommen hat und wieviele Medaillen sie/er dabei gewonnen hat.
Gewünschtes Ergebnismenge:
Sportler\_Nr | Name | Turniere | Medaillen
-----------------------------------------------
1 | Sportler1 | 18 | 8
2 | Sportler2 | 3 | 1
Folgende zwei Abfragen liefern z. B. das gewünschte Ergebnis:
select Sportler.Sportler\_Nr, Name, sum(Anzahl\_Turniere) as Turniere,
(select sum(Anzahl\_Medaillen) from Medaillen where Sportler\_Nr = Sportler.Sportler\_Nr) as Medaillen
from Sportler, Turniere
where Sportler.Sportler\_Nr=Turniere.Sportler\_Nr
group by Sportler.Sportler\_Nr, Name
select Sportler.Sportler\_Nr, Name, sum(Anzahl\_Turniere) as Turnieranzahl, Medaillen
from Sportler, Turniere, (select Sportler\_nr, sum(Anzahl\_Medaillen) as Medaillen from Medaillen group by Sportler\_Nr) as m
where Sportler.Sportler\_Nr=Turniere.Sportler\_Nr and Sportler.Sportler\_Nr = m.Sportler\_Nr
group by Sportler.Sportler\_Nr, Name, Medaillen
Mit Access klappt das z. B. ganz okay so, allerdings benutze ich irgend’ne uralt SQLBase von Gupta und die mag die Subqueries nicht und liefert 'n Syntaxfehler.
Nun also die Frage:
Wie kann ich obige Ergebnismenge erhalten, ohne Subqueries zu benutzen???
Thanx im Voraus
Lala