테스트 사이트 - 개발 중인 베타 버전입니다

회원 및 접속현황 테이블을 이용해서 COUNT 출력하는 질문 있습니다 ㅠ,ㅠ 채택완료

amkorDB 6년 전 조회 4,138

table : table_a  (접속 현황 테이블)

id create_at member_id
0 2018-01-14 22:17:57 0
1 2018-01-15 17:23:48 0
2 2018-01-17 17:23:47 1
3 2018-01-17 17:23:48 0
4 2018-02-14 23:17:57 0
5 2018-03-15 11:17:57 0
6 2018-04-15 12:17:57 1
7 2019-01-15 13:17:57 0
8    

 

 

table : member (회원 테이블)

id user_id group_id
0 user1 1
1 user2 1

 

이렇게 2개의 테이블을 이용해서

각 회원의 날짜 데이터를 이용해서 접속 현황을 출력하고 싶습니다.

즉 접속현황 테이블하고 회원 테이블을 조인해서 밑에 sql문을 보시면 WHERE 절에 2018 즉 해당 년도를 주입하면

그에 맞는 월단위로 해당 회원이 어느정도 접속되어나 COUNT를 해보았습니다.

 

 

일단 제가 sql문을 짜보았습니다!!!
SELECT  
COUNT(*) AS use_count,
DATE_FORMAT(a.create_at, '%Y-%m') date,
 b.user_id
FROM table_a AS a
LEFT JOIN table_b AS b
ON (a.member_id = b.id)
WHERE DATE_FORMAT(a.create_at, '%Y') = '2018' AND (b.group_id = 1)
GROUP BY b.user_id, date;</pre>

<p>

 

결과 

use_count date user_id
1 2018-01 user1
1 2018-04 user1
3 2018-01 user2
1 2018-02 user2
1 2018-03 user2

 

일단 여기까지 count는 잘 나옵니다 ㅠ,ㅠ

 

문제는 해당 테이블에 데이터가 없으면 use_count에 0으로 입력 받고 싶습니다 ㅠ,ㅠ

 

예를들어

 

제가 원하는 데이터 출력

use_count date user_id
1 2018-01 user1
0 2018-02 user1
0 2018-03 user1
1 2018-04 user1
3 2018-01 user2
1 2018-02 user2
1 2018-03 user2
0 2018-04 user2

 

이렇게 데이터가 없으면 해당 유저에 use_count가 0으로 출력되고 date에는 해당되는 날짜로요 ㅠ,ㅠ

 

이거 정말 어렵네요 ㅠ,ㅠ

 

db 고수님들 부탁드립니다 ㅠ,ㅠ

 

   
   
   

 

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트
잉끼s
6년 전

쿼리 만으로는 어렵습니다.

저라면 이렇게 하겠습니다.

 

</p>

<p>$sql = "

    SELECT

    COUNT(*) AS use_count,

    DATE_FORMAT(a.create_at, '%Y-%m') date,

     b.user_id

    FROM table_a AS a

    LEFT JOIN table_b AS b

    ON (a.member_id = b.id)

    WHERE DATE_FORMAT(a.create_at, '%Y') = '2018' AND (b.group_id = 1)

    GROUP BY b.user_id, date;

";</p>

<p>$query = sql_query($sql);

while($row = sql_fetch_array($query))

    $result[$row['date']] =  $row['use_count'];</p>

<p>

for($i=1;$i<=12;$i++){

    $month = "2018-".sprintf('%02d',$i);

    echo "{$month} : ".isset($result[$month]) ? $result[$month] : 0;

}</p>

<p>

 

내용은 일단 위처럼 가져온 월별데이터를 배열로 저장 후 해당 내역이 있으면 그 숫자를 출력하고 없음 0을 출력하는  내용입니다.

 

 

코드는 테스트 하지 않았습니다. 오류가 있을 수 있습니다.

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인