LEFT JOIN MEDICALTESTS m ON p.PlayerId = m.PlayerId
WHERE m.PassedMedical = 1
Det er selvmodsigende. Du siger, at det er en venstre join, så MEDICALTESTS-posten behøver ikke eksistere, men siger så, at posten faktisk skal eksistere og have en 1 som bestået Medicinsk. Så din venstre join bliver faktisk en indre join, og på samme måde, da du skal have en MEDICALTESTS række, skal du også have en PLAYERS række, så det bliver også en indre join.
Prøv dette i stedet:
INNER JOIN MEDICALTESTS m ON p.PlayerId = m.PlayerId and m.PassedMedical = 1
Ikke sikker på, hvordan SQL-serveren fortolker FROM foo LEFT JOIN bar INNER JOIN baz...du vil have den til at fortolke det som FROM foo LEFT JOIN (bar INNER JOIN baz). Hvis det ikke virker, skal du bruge et undervalg i stedet; ikke deltage, bare tilføje:
WHERE p.PlayerId IS NULL or (select PassedMedical from MEDICALTESTS m where m.PlayerId=p.PlayerID) = 1
Håber dette hjælper på trods af min manglende kendskab til SQL Server.