내 이상한 제목에 대해 유감 스럽지만 정확히 무엇을 찾고 있는지 알 수 없습니다. 작업은 아주 간단합니다. 나는 대회 테이블을 가지고있다. 다른 테이블 그룹. 모든 그룹에는 몇 명의 참가자가 있습니다. 마지막 테이블에는 참가자의 결과가 저장됩니다. 과제는 모든 그룹의 참가자 중 처음 세 명을 얻는 것입니다.오라클 저장 프로 시저 - 변수의 점진적인 구축
그래서 그룹을 반복하고, 모든 그룹의 처음 세 참가자 (달성 점수에 따라)를 얻고 변수에 추가해야합니다.
CREATE OR REPLACE PROCEDURE get_first_three_of_all(contestants OUT SOME_TYPE) AS
CURSOR groups SELECT...
BEGIN
FOR group IN groups LOOP
APPEND(contestants, get_first_three_of_one_group(group.id))
END LOOP;
END;
나는이 작업을 해결하는 방법, 아무 생각이 : 여기
은 의사입니다. 나는 무엇을 찾아야할지 모른다. 너는 친절하고 도와 주시겠습니까? 감사.편집 : 내 테이블의 단순화 된 구조 :
- 경쟁 :, 심사 위원을 contestant_group_id :
- 참가자를 competition_id :
- GroupContestant contestant_id : contestant_group_id, competition_d,은 group_number을
- 결과를 contestant_id 포인트
선택 한 그룹 (그룹 번호 YYY)의 데이터를 얻을 수는 여기 : 구조에
SELECT * FROM (
SELECT res.contestant_group_id, SUM(res.points) AS points
FROM Result res
WHERE res.couple_group_id IN (SELECT couple_group_id
FROM GroupContestant
WHERE competition_id = XXX
AND group_number = YYY)
GROUP BY res.contestant_group_id
ORDER BY points DESC
)
WHERE ROWNUM <= 3;
구조체를 기술하십시오. 쿼리를 사용하면 대답을 쉽게 얻을 수 있습니다. 왜 저장 프로 시저를 사용하고 싶습니까? –
고맙습니다. 게시물을 편집하고 간단한 쿼리로 단순화 된 데이터베이스 구조를 추가하여 한 그룹의 데이터를 선택했습니다. 저장 프로 시저를 사용할 필요는 없지만 쿼리로 결과를 얻는 방법을 모르겠습니다. 도와 주시겠습니까? 왜 내가 downvote있어? – Honza