Hallo zusammen,
ich habe mal eine Frage bezüglich SQL abfragen. Und zwar habe ich folgende Situation.
Ich habe drei Tabellen: Person, Meter und Mannschaft.
In Person gibt es die Felder: Nummer, Vorname, Nachname, Mannschaft (als Index)
In Meter gibt es: Nummer, Personindex und Meter
In Mannschaft gibt es: Nummer und Mannschaftsname
So jetzt möchte ich eine SQL abfrage starten, die in Meter die gleichen Personenindex erkennt und deren Summe von Meter zurückgibt.
Anschließen möchte ich die Summe der Meter und den Mannschaftsnamen einer Person zuordnen, so dass mein fertig Tabelle ungefähr den Aufbau hat.
Person.Nummer, Nachname, Vorname, Mannschaftsname (als Text), Summe(Meter), ideal wäre noch Meter der gesamten zugehörigen Mannschaft
Ich habe auch schon mehrere Varianten ausprobiert bin aber zu keinem richtigen Ergebnis gekommen.
Eine Variante wäre:
SQL-Anweisung
1:
| SELECT Person.Nummer, Person.Vorname, Person.Nachname, Mannschaft.MName, sum(Meter.Meter) Meter FROM Person, Meter, Mannschaft WHERE (Person.Nummer=Meter.Personindex) and (Person.Mannschaft = Mannschaft.Nummer) GROUP BY Person.Nummer, Person.Vorname, Person.Nachname, Mannschaft.MName ORDER BY Meter DESC |
Dabei ist das Problem, dass immer nur ein Teilnehmer pro Mannschaft ausgegeben wird.
Eine andere Variante wäre:
SQL-Anweisung
1:
| Select t2.mName Mannschaftsname, t1.nachname Nachname, t1.vorname Vorname, t3.Strecke Strecke From Person t1, Mannschaft t2, (SELECT T1.Nummer Nummer, SUM(T2.Meter) Strecke FROM Person T1, Meter T2 where T1.Nummer=T2.Personindex group by T1.Nummer order by Strecke DESC) T3 where t1.mannschaft=t2.Nummer and t2.nummer=t3.Nummer group by t2.mname, Nachname, Vorname, Strecke order by Mannschaftsname |
Dabei ist das Problem, dass die zugeordneten Summen der Meter nicht stimmen (und ich weiß nicht warum).
Als Datenbank benutze ich die embedded Variante der NexusDB. Compiler ist Delphi XE5 auf einem Windows 7 Rechner.
Hoffe mir kann jemand weiter helfen.
Gruß,
Jack
Es gibt keine dummen Fragen, nur dumme Antworten.