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

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

QA

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

본문

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;

 

결과 

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

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

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

 


$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;
";
$query = sql_query($sql);
while($row = sql_fetch_array($query))
    $result[$row['date']] =  $row['use_count'];

for($i=1;$i<=12;$i++){
    $month = "2018-".sprintf('%02d',$i);
    echo "{$month} : ".isset($result[$month]) ? $result[$month] : 0;
}

 

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

 

 

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

 

답변을 작성하시기 전에 로그인 해주세요.
전체 59,282
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT