2011-09-22 4 views
0

SELECT 문에서 ORDER BY 명령을 사용하여 MySQL에 대해 묻고 싶습니다. 특히, 특정 값이 데이터베이스에 나타나는 횟수를 세는 것이 가능한지와이 카운트 문을 기반으로 데이터베이스를 정렬 할 수 있는지 알고 싶습니다.특정 값이 나타나는 횟수에 따라 select 문에서 순서가 반환됩니다.

player_id 
1 
2 
3 
4 
5 

다음과 같은 게임 플레이어 ID를 가진 게임 테이블 : 나는 선수 다음 player_ids 테이블이있는 경우 예를 들어,

game_id player_id 
0  5 
1  2 
2  5 
3  1 
4  3 
5  4 
6  3 
7  5 
8  4 

을 전에서 선수를 선택할 수 있도록하려면 플레이어 테이블과 그들이 데이터베이스에 나타난 횟수로 구성하십시오. 예를 들어 플레이어 5가 가장 먼저 나오고 (player_id가 가장 많은 게임을 한 것처럼) 선수 3과 4가 뒤를 잇을 것입니다. 어쨌든 내가 할 수 있습니까? 동시에, 나는 중복 레코드를 원하지 않는다. (예를 들어, 플레이어 5의 레코드는 3 번이 아니라 한 번만 반환되어야한다.) 누군가가 도울 수 있다면, 크게 감사하겠습니다.

+1

에 오신 것을 환영에 StackOverflow에 : 당신이 여기 새로 나는이 http://meta.stackexchange.com/questions/5234/how-does (당신이 [답변을 받아 들일]한다 기억 문제 해결을 찾거나 문제를 해결하는 데 도움이된다면, – Marco

답변

0

player_id의 COUNT에 대해 ID를 선택하고 'GROUP BY'를 사용하여 각 개별 ID에 대해 카운트가 수행되도록해야합니다. 계산하지 않고 결과를 합산하려면 GROUP BY 대신 SUM을 사용하십시오. 결과의 갯수만큼 전체를 정렬하려면 ORDER BY를 사용하고 이전과 같은 COUNT 명령을 사용하십시오.

귀하의 문은 다음과 같을 것입니다 : -

선택 ID는, 표에서 (ID) 계산, 표 2 곳 계수 (ID) 하강에 의해 ID 순서로 table1.id = table2.keyid 그룹;

0

이 시도 :

SELECT p.*, COUNT(g.game_id) tot_games 
FROM players p INNER JOIN game g 
ON p.player_id = g.player_id 
GROUP BY p.player_id 
ORDER BY tot_games DESC 
관련 문제