LEFT JOIN MEDICALTESTS m ON p.PlayerId = m.PlayerId
WHERE m.PassedMedical = 1
Dat is tegenstrijdig. U zegt dat het een left join is, dus het MEDICALTESTS-record hoeft niet te bestaan, maar u zegt dan dat het record wel moet bestaan en een 1 moet hebben als PassedMedical. Dus je linker join wordt in feite een inner join, en aangezien je een MEDICALTESTS-rij moet hebben, moet je ook een PLAYERS-rij hebben, dus dat wordt ook een inner join.
Probeer in plaats daarvan dit:
INNER JOIN MEDICALTESTS m ON p.PlayerId = m.PlayerId and m.PassedMedical = 1
Ik weet niet zeker hoe de SQL-server FROM foo LEFT JOIN bar INNER JOIN baz interpreteert... je wilt dat het dat interpreteert als FROM foo LEFT JOIN (bar INNER JOIN baz). Als dat niet werkt, gebruik dan een subselect; doe niet mee, voeg gewoon toe:
WHERE p.PlayerId IS NULL or (select PassedMedical from MEDICALTESTS m where m.PlayerId=p.PlayerID) = 1
Ik hoop dat dit helpt ondanks mijn gebrek aan bekendheid met SQL Server.