まとめて取得ってこういう事?
※count()で数えられるのはNull以外なのでそれを利用する。
SQL
1SELECT DATE_FORMAT(rest_date, '%Y-%m') AS time
2 , COUNT(*) AS count
3 , COUNT(login_flag) AS login_count
4FROM res
5GROUP BY DATE_FORMAT(rest_date, '%Y-%m')
6;
もし、login_flag=1の時だけという場合は、
** sum(case when login_flag=1 then 1 end) AS login_count **
などとします。
login_flag=(0,1,null)という値の範囲なら、
** sum(login_flag) AS login_count **
でもいいですね。
追記
SQL
1SELECT DATE_FORMAT(res.rest_date, '%Y-%m') AS time
2 , COUNT(*) AS count
3 , COUNT(res.login_flag) AS login_count
4 , COUNT(fix.id) AS spare_count
5FROM res left join fix on res.id=fix.id
6GROUP BY DATE_FORMAT(res.rest_date, '%Y-%m')
7;