Problem mit 2 Tabellen!

Hallo!

ich habe einen MSSQL-Express-Server bei mir laufen und will nun daten aus 2 Tabellen auslesen! Hierbei handelt es sich um ein Programm zur Auswertung von Sportwettkämpfen. In der 1. Tabelle habe ich ein Stamm an Sportlern und in der 2.Tabelle sind Teilnehmer der Wettkämpfe. Nun möchte ich die Tabellen zusammenführen, sodass ich mir die Teilnehmer eines Wettkampfes mit den dazugehörigen Daten aus der 1. Tabelle anzeigen.

Tabelle 1

SportlerID
Name
Vorname

Tablelle 2

TeilnehmerID
SportlerID
WettkampfID

Nun möchte ich, dass er mir alle Daten aus Tabelle 1 anzeigt und die dazugehörigen Daten aus Tabelle 2, die z.B. WettkampfID = 2 entsprechen, für die anderen sollen leere Felder ausgegeben werden.

Meine jetzige Abfrage klappt nur, wenn ein Sportler nur an einem Wettkampf teilgenommen hat.

SELECT Sportler.*, Teilnehmer.*
FROM Sportler LEFT OUTER JOIN
Teilnehmer ON Sportler.SportlerID = Teilnehmer.SportlerID
where Teilnehmer.Wettkampfid = 2 or Teilnehmer.Wettkampfid is null

MfG
Björn

Hallo Björn,
mit Deiner Abfrage schränkst Du auf diejenigen Sportler ein, die in Wettkampf 2 oder an keinem Wettkampf teilnehmen. Die Sportler an den anderen Wettkämpfen werden so nicht angezeigt.
Eine schnelle Lösung wäre mit UNION möglich, ich hab das Statement mal zusammengebastelt und getestet.

Viel Erfolg!
Armin

SELECT Sportler.Sportlerid, sportler.name, sportler.vorname, Teilnehmer.teilnehmerid, Teilnehmer.sportlerid, teilnehmer.wettkampfid
FROM Sportler LEFT OUTER JOIN
Teilnehmer ON Sportler.SportlerID =
Teilnehmer.SportlerID
where Teilnehmer.Wettkampfid = 2
union
SELECT Sportler.Sportlerid, sportler.name, sportler.vorname, 0,0,0
FROM Sportler LEFT OUTER JOIN
Teilnehmer ON Sportler.SportlerID =
Teilnehmer.SportlerID
where Teilnehmer.Wettkampfid 2 or teilnehmer.wettkampfid is null
order by wettkampfid desc;

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]