여기에 사용자 테이블과 id이 기본 키입니다. [많은 관계 하나 와 출석 테이블 여기서다음 MySQL 쿼리를보다 효율적으로 작성하려면 어떻게해야합니까?
+------------+-----------------+
| id | name | created |
+------------+-----------------+
| 1 | Sumon | 2015-01-10 |
+------------+-----------------+
| 2 | James | 2015-01-11 |
+------------+-----------------+
| ...| ... | ... |
+------------+-----------------+
다른 테이블 출석이다. 여기 ID는 기본 키 및 USER_ID는 사용자 테이블
+--------------+------+--------+-----------------+
| id | user_id | year | month | created |
+--------------+------+--------+-----------------+
| 1 | 2 | 2015 | 1 | 2015-01-10 |
+--------------+---------------+-----------------+
| 2 | 1 | 2016 | 2 | 2016-02-10 |
+--------------+------+--------+-----------------+
| 3 | 1 | 2016 | 2 | 2016-02-11 |
+--------------+------+--------+-----------------+
| ...| ... | ... | ... | ... |
+--------------+------+--------+-----------------+
나의 현재 MySQL의 쿼리를 다음과 같이
처럼 내 MySQL은 위의 쿼리의SELECT COUNT(DISTINCT user_id) AS january,
(SELECT COUNT(DISTINCT user_id) FROM attendances WHERE year='2016' AND month=2) as february,
(SELECT COUNT(DISTINCT user_id) FROM attendances WHERE year='2016' AND month=3) as march,
...
...
(SELECT COUNT(DISTINCT user_id) FROM attendances WHERE year='2016' AND month=12) as december
FROM attendances WHERE year='2016' AND month=1
결과의 외부 키입니다
+---------+----------+-------+-------+-----+-------+------+--------+-----------+---------+----------+----------+
| january | february | march | april | may | june | july | august | september | october | november | december |
+---------+----------+-------+-------+-----+-------+------+--------+-----------+---------+----------+----------+
| 24 | 17 | 20 | 0 | 24 | 23 | 19 | 24 | 13 | 0 | 0 | 0 |
+---------+----------+-------+-------+-----+-------+------+--------+-----------+---------+----------+----------+
이 동일한 쿼리를보다 효율적으로 작성하는 방법은 무엇입니까?
프리젠 테이션 레이어에 데이터 표시의 처리 문제를 고려. 그것은 훨씬 더 유연하고 확장 가능합니다. – Strawberry
'group by'문을 사용할 수 있습니다. http://www.w3schools.com/sql/sql_groupby.asp – Webman
감사합니다. @ 딸기 –