LEFT JOIN MEDICALTESTS m ON p.PlayerId = m.PlayerId
WHERE m.PassedMedical = 1
To je rozporuplné. Říkáte, že jde o levé spojení, takže záznam MEDICALTESTS nemusí existovat, ale pak říkáte, že záznam musí ve skutečnosti existovat a mít 1 jako PassedMedical. Takže vaše levé spojení se ve skutečnosti stane vnitřním spojením a podobně, protože musíte mít řádek MEDICALTESTS, musíte mít také řádek PLAYERS, takže se také stane vnitřním spojením.
Zkuste místo toho toto:
INNER JOIN MEDICALTESTS m ON p.PlayerId = m.PlayerId and m.PassedMedical = 1
Nejste si jisti, jak SQL server interpretuje FROM foo LEFT JOIN bar INNER JOIN baz...chcete, aby to interpretoval jako FROM foo LEFT JOIN (bar INNER JOIN baz). Pokud to nefunguje, použijte místo toho podvýběr; nepřipojujte se, pouze přidejte:
WHERE p.PlayerId IS NULL or (select PassedMedical from MEDICALTESTS m where m.PlayerId=p.PlayerID) = 1
Doufám, že to pomůže navzdory mé nedostatečné znalosti SQL Server.