LEFT JOIN MEDICALTESTS m ON p.PlayerId = m.PlayerId
WHERE m.PassedMedical = 1
Thật là mâu thuẫn. Bạn đang nói rằng đó là một phép nối bên trái, vì vậy bản ghi MEDICALTESTS không cần tồn tại, nhưng sau đó nói rằng bản ghi trên thực tế phải tồn tại và có 1 là PassedMedical. Vì vậy, tham gia bên trái của bạn trên thực tế trở thành liên kết bên trong và tương tự như vậy, vì bạn phải có hàng MEDICALTESTS, bạn cũng phải có hàng NGƯỜI CHƠI, do đó, nó cũng trở thành liên kết bên trong.
Hãy thử cái này thay thế:
INNER JOIN MEDICALTESTS m ON p.PlayerId = m.PlayerId and m.PassedMedical = 1
Không chắc máy chủ SQL diễn giải như thế nào thanh FROM foo LEFT JOIN thanh INNER JOIN baz ... bạn muốn nó diễn giải như FROM foo LEFT JOIN (thanh INNER JOIN baz). không tham gia, chỉ cần thêm:
WHERE p.PlayerId IS NULL or (select PassedMedical from MEDICALTESTS m where m.PlayerId=p.PlayerID) = 1
Hy vọng điều này sẽ hữu ích mặc dù tôi chưa quen với SQL Server.