2012-05-03 7 views
3

MySQL 백엔드를 사용하는 작은 레이싱 프로젝트가 있습니다. 두 개 이상의 종목에서 상위 3 위 안에 든 모든 드라이버의 세부 정보를 얻기 위해 좋은 쿼리를 찾으려고합니다. 여기에 작은 테이블 고장이다 : 나는 JOIN on driver_id을 수행 한 후 결과를 아래로 얇은에 WHERE on my 'placed' 열을 사용하여 단지 수 있기 때문에두 번 이상 나타나는 값을 찾기위한 SQL 쿼리

Drivers table: 
driver_id, driver_name, driver_age, etc misc details 

Entry table: 
entry_id, driver_id, placed 

따라서는, 일반적으로 이것은 큰 문제가되지 않을 것이다; 그러나 클라이언트는 반드시 상위 3 위 안에 두 번 이상 배치 된 남자를 반드시 가지고 있어야합니다. 나는 사물의 스크립트 쪽에서 처리 하겠지만 데이터를 가져 오는 데 사용하는 앱은 매우 이상합니다.

감사합니다. 이 같은

답변

3
select * 
from `Entry table` 
where placed <= 3 
group by driver_id 
having count(*) > 1 

또는 뭔가 ... 나는 당신이 그것을 내가 필요 정확히이었다 참여와 결합이 완벽했다 카운트 문

+1

에 HAVING 절, ​​찾고있는 것을 알고있다. 나는 카운트 (*)를 시도했지만 그룹화해야한다는 것을 몰랐다. 감사! –

관련 문제