Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come faccio a UNIRE una terza tabella nella mia istruzione SQL che restituisce un COUNT senza perdere gli 0 elementi di conteggio?

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

È contraddittorio. Stai dicendo che è un join sinistro, quindi il record MEDICALTESTS non deve esistere, ma poi stai dicendo che il record deve effettivamente esistere e avere un 1 come PassedMedical. Quindi il tuo join sinistro diventa di fatto un inner join, e allo stesso modo, poiché devi avere una riga MEDICALTESTS, devi avere anche una riga PLAYERS, in modo che diventi anche un inner join.

Prova invece questo:

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

Non sono sicuro di come il server SQL interpreti FROM foo LEFT JOIN bar INNER JOIN baz ... vuoi che lo interpreti come FROM foo LEFT JOIN (bar INNER JOIN baz). Se non funziona, usa invece un subselect; non iscriverti, aggiungi:

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

Spero che questo aiuti nonostante la mia mancanza di familiarità con SQL Server.