데이터베이스 테이블 ('결과')에서 결과 목록을 얻으려고 시도하고 있지만 각 구성원이 여러 결과를 제출했을 수 있으며 가장 좋은 시간을 검색하려고합니다. .집계 함수가 동일하면 MySQL 그룹이 복수 결과를 반환합니다.
동일한 쿼리에서 동일한 결과를 얻은 결과가 여러 개인 경우를 제외하고 아래 쿼리는 효과적인지는 모르겠지만 작동합니다. (예 : 경쟁자 # 2는 32.15 초 두 번 점수를받습니다). 이 상황에서 필자는 필자가 원했던 것이 아니라이 경쟁자를 위해 두 줄을 얻는다. 이 문제를 해결하기 위해
SELECT result_id FROM (
SELECT member_id,MIN(time) AS mintime FROM result
JOIN member_result ON result.id = member_result.result_id
WHERE event_id = ?
GROUP BY member_id ORDER BY mintime) AS x
JOIN result ON result.time = x.mintime
JOIN member_result ON member_result.result_id = result.id
AND member_result.member_id = x.member_id
모든 제안을 크게받을 수있다.
EDIT : 요청한 테이블의 구조.
member_result (TABLE)
id int unsigned (10)
result_id int unsigned (10)
member_id int unsigned (10)
club_id int unsigned (10)
result (TABLE)
id int unsigned (10)
time decimal (6)
is50mPool BIT()
date date()
verified BIT()
verified_date timestamp()
verified_comment varchar (255)
hasEmailed BIT()
enabled BIT()
event_id int unsigned (10
문제
샘플 : 결과 : 이벤트 # 2의 번호 # 1 시간 60 member_result : 번호 # 1, 1 result_id, MEMBER_ID 3 결과 : 이벤트 # 2 ID # 2 시간 60 member_result : id # 2, result_id 2, member_id 3
result_id와 함께 하나의 행을 반환하고 싶습니다. 현재 최소 시간이 동일하므로 두 행 모두 반환됩니다.
이것은 "그룹 별 최소/최대"질문입니다. 유사한 질문은 여기에 전에 수백 번 문자 그대로 물어 보았습니다. 아마도 StackOverflow 전체에서 가장 중복 된 질문 일 것입니다. 비슷한 질문을 찾으려면 검색 기능을 사용하십시오. –
나는 내 질문을 게시하기 전에 많은 검색을했다. 실제로 그것은 "그룹당 가장 적은/가장 큰"질문입니다. 그러나, 내가 찾은 다른 게시물에서 조인 작업이 없었으며 여기서는 여러 시나리오를 내 시나리오에 표시 할 수있었습니다. – mctedo
테이블 구조, 샘플 레코드 및 원하는 결과를 포함 시키면 훨씬 좋습니다. MakeUseOf [* SQLFiddle *] (http://www.sqlfiddle.com) –