Продолжение этого вопроса Мне нужен оператор SQL, который возвращает число строк в таблице с определенным значением.
Мы остановились с SQL-оператором следующим образом ...
SELECT t.teamid,
t.teamname,
COALESCE(COUNT(p.playerid), 0) AS playercount,
t.rosterspots
FROM TEAMS t
LEFT JOIN PLAYERS p ON p.teamid = t.teamid
GROUP BY t.teamid, t.teamname, t.rosterspots
Мне нужно добавить еще одно ограничение. ЧТО, ЕСЛИ игрокам необходимо сдать медицинский экзамен, прежде чем они начнут засчитываться в счет «playercount»?
Я представлю таблицу.
MedicalTests
PlayerId PassedMedical
1 1
2 0
3 1
4 1
Где "PassedMedical" - это бит (1 = true).
А также добавьте еще 1 строку данных в таблицу команд.
TeamId Team Name
3 Toronto Rapters
Таким образом, у меня есть команда с 0 игроками.
И ожидаемый результат изменится на:
Team Name PlayerCount
Miami Heat 2
New York Knicks 1
Toronto Rapters 0
, так как один из игроков Miami Heat еще не проходил медосмотр.
Если я добавлю
LEFT JOIN MEDICALTESTS m ON p.PlayerId = m.PlayerId
WHERE m.PassedMedical = 1
Из вышеприведенного утверждения я теряю все строки "0"?
Спасибо,
Джастин