2011-10-01 4 views
0

Foursquare의 리더 보드 스타일을 구현하는 방법을 찾고 있습니다. 예를 들어 톱 10을 표시하는 대신 2 명의 사람과 2 명의 사람을 보여줍니다. 친구들 사이에서 당신 아래에 있습니다.FourSquare와 같은 리더 보드를 구축하는 방법 (위와 아래의 사용자)

나는 모든 사람의 점수를 낮추고 배열 조작을하지 않아도되기를 바라고 있습니다. 어쨌든 똑똑한 SQL 문으로이 작업을 수행 할 수 있습니까?

select * from USER where SCORE < myscore order by SCORE DESC limit 2; 

select * from USER where SCORE >= myscore order by SCORE ASC limit 2; 

이 당신이 무슨 뜻인가 :

답변

2

당신은 수 (가정 테이블 사용자는 정수 열 점수가)?

+0

유일한 점수는 동일한 점수의 사용자가 그럴듯하게 나타날 수있는 경우, 새로 고침 할 때마다 임의로 표시된다는 것입니다. ID와 같은 다른 순서 제약 조건을 추가하여이 문제를 해결할 수 있습니다. – rwyland

+0

두 개의 별도 SQL 문이 하나의 검색보다 빠를 수 있습니까? 여분의 전화를하는 것이 더 비쌀 것이라고 생각합니까? – bijanv

+0

모두 네트워크 대기 시간에 따라 다르지만 (localhost는 none 임) db 호출은 특히 인덱스를 사용할 때 최적화되기 때문에 대개 매우 빠릅니다. – rwyland

관련 문제