2011-03-17 5 views
1

사진 순위 시스템을 만들고 있습니다. 기본적으로, 나는 세 가지 주요 필드 - 원, 잃어버린, howmanyplayed 있습니다.행의 순위를 얻기 위해 쿼리하는 방법은 무엇입니까?

의 내가 나는 각 사진의 순위를 얻을 수있는 쿼리를 작성하기 위하여려고하고 사진 3

Photo Won Lost Played 
------------------------- 
A  3 2  5 
B  1 4  5 
C  3 2  5 

있다고 가정 해 봅시다. 문제는 사진 A와 사진 C가 정확히 같은 기록을 가지고 있다는 것입니다. 어떻게 사진 A와 C 모두에 대해 1을 반환하는 쿼리를 작성합니까?

Photo Won Lost Played Rank 
------------------------------- 
A  3 2  5  1 
C  3 2  5  1 
B  1 4  5  ? 

추가는 3/17/11

에 그래서 지금은 대신 "연주"의 "vote_ratio"필드가 테이블 구조를 조금

을 변경했습니다. "vote_ratio"는 "vote_win"/ "vote_lose"값을 보유합니다.

  1. 쿼리 전용 "사진 A"를 그것의 순위를 얻을 :

    그래서 표는 내가 원하는 무엇

    Photo Won Lost Ratio 
    A  3  2  1.5 
    B  1  4  0.25 
    C  3  2  1.5 
    

    으로 수정해야합니다.

  2. 모든 레코드를 쿼리하고 각 레코드의 순위를 표시합니다.

다음 쿼리로 # 2 할 수 있습니다.

"select * from table order by ratio desc" 

하지만 다시 문제가 있습니다. 사진 A와 C는 같은 비율입니다. 둘 다 순위 1 위가되어야합니다.

+0

순간? – bensiu

+0

"return 1"이 의미하는 바를 명확히 할 수 있습니까? 단일 행을 반환 하시겠습니까? 각 행을 반환하나요? –

+0

질문이 명확하지 않습니다. 랭킹 시스템은 어때? 테이블 구조는 뭐니? – AbiusX

답변

1

"반환 1"을 반환하는 경우 순위 1 기록을 의미할까요? -이 같은> 테스트하지, 그러나 그것은 할 수 GROUP BY의 조합 GROUP_CONCAT :

SELECT Won, Lost, Played, GROUP_CONCAT(photo, ', ') AS photos 
FROM your_table 
GROUP BY Won, Lost, Played 
1

내가 그것을 반환 생각

SELECT * 
FROM photos 
ORDER BY (played/lost) 

을 테스트하지 :

쿼리이에 무엇
Photo A // rank1 
Photo C // rank1 
Photo B // rank2 
+0

그래서 작동 ...? –

+1

당신이'주문한 (연주/잃어버린) DESC '을 의미한다고 생각합니다. 그러나 ... 손실이 없다면 어떨까요? –

+0

행 컬렉션에만 작동합니다. 그 ID로 특정 행을 쿼리 한 다음 순위를 얻어야합니다. – Moon

관련 문제