sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cómo ME UNO a una tercera tabla en mi instrucción SQL que devuelve un COUNT sin perder los 0 artículos de conteo?

LEFT JOIN MEDICALTESTS m ON p.PlayerId = m.PlayerId
WHERE m.PassedMedical = 1

Eso es contradictorio. Está diciendo que es una combinación izquierda, por lo que no es necesario que exista el registro MEDICALTESTS, pero luego dice que el registro debe existir y tener un 1 como PassedMedical. Por lo tanto, su combinación izquierda se convierte en una combinación interna y, de la misma manera, dado que debe tener una fila PRUEBAS MÉDICAS, también debe tener una fila JUGADORES, por lo que también se convierte en una combinación interna.

Prueba esto en su lugar:

INNER JOIN MEDICALTESTS m ON p.PlayerId = m.PlayerId and m.PassedMedical = 1

No estoy seguro de cómo el servidor SQL interpreta FROM foo LEFT JOIN bar INNER JOIN baz... quieres que lo interprete como FROM foo LEFT JOIN (bar INNER JOIN baz). Si eso no funciona, usa una subselección en su lugar; no te unas, solo agrega:

WHERE p.PlayerId IS NULL or (select PassedMedical from MEDICALTESTS m where m.PlayerId=p.PlayerID) = 1 

Espero que esto ayude a pesar de mi falta de familiaridad con SQL Server.