2016. 1. 11. 19:24ㆍ프로그래밍/MySQL
문제 : 랭킹 테이블에서 특정 그룹을 선택하고 그중에서 나의 순위는..?
- 랭킹 테이블에서 친구들 또는 내가 속한 그룹에서 나의 랭킹을 알고자 할때 사용할수 있습니다.
순서 :
1. 테이블의 특정 그룹을 구합니다.
2. 나의 순위를 구합니다.
참고 : IN의 활용
1. 우선 다수의 친구 목록을 구하고 이를 IN명령어를 통해서 uniq_id와 비교하여 각 친구들의 row를 구합니다.
uniq_id IN ('친구아이디1','친구아이디2','친구아이디3')
예를 들면 다음과 같이 하면 원하는 친구들의 랭킹 테이블을 구할수 있습니다.
Select * from rank_info WHERE .... and uniq_id IN ('친구아이디1','친구아이디2','친구아이디3')
이렇게 구한 테이블에서 다시 원하는 순위를 구하면 됩니다.
구한 테이블을 '(' 와 ')'로 묶어줍니다. 그리고 다시 Select 문을 이용해서 검색을 해주시면 됩니다.
예)
select count(*) as rank from (select * from rank_info where period=20 and keyword='World' and app_id=AT879HGF and (write_date >='2016-01-10 00:00:00' and write_date< '2016-01-017 23:59:59')
and visibility=1 and uniq_id IN ('친구아이디1','친구아이디2','친구아이디3')) as temp where score > 내점수 ;
설명 : WHERE문의 조건들은 다양하게 구성하시면 됩니다. 중요한것은 IN문을 이용해서 배열의 친구목록에 해당되는 table을 구하고 그 속에서 다시 원하는 조건의 row를 구하시면 됩니다.
그리고 자바소스에서는 다음과 같이 rank로 찾으시면 됩니다.
while(result.next())
{
_userRankFromFriendlist = result.getInt("rank");
}
자바를 처음 접한지는 대략 18년정도 되어가는 것 같습니다.
DB전문가가 아니라 직접 경험하며 알아가고 있습니다.
게임등을 만들다 랭킹테이블에서 친구들 그룹내에서 나의 순위를 알고자 할때 유용하게 사용될수 있을것으로 생각됩니다.
오늘도 개발하시느라 밤낮으로 고생하시는 개발자분들에게 조금이나마 도움이 되었으면 하는 마음에 몇자 적어보았습니다.
즐거운 개발되시기 바랍니다.
'프로그래밍 > MySQL' 카테고리의 다른 글
일일 누적되는 로그테이블에서 DAU수를 구하기 위한 SQL문 (0) | 2016.11.15 |
---|---|
테이블에서 일정 개수 이후의 ROW를 모두 삭제하기 (0) | 2016.09.12 |
내 등수 구하기(동점자 처리 포함) (0) | 2016.05.20 |