(오라클 DB에 대한 SQL 쿼리)값을 선택
내가 가장 높은 우선 순위에 따라 작업 기록에 장비 ID 번호를 표시하기 위해 노력하고있어 (낮은 번호) 작업과 관련된 모든 작업을 표시합니다. 작업의 모든 작업을 표시해야하므로 쿼리를 우선 순위가 가장 높은 작업으로 제한 할 수 없습니다. 가장 높은 우선 순위는 1 (두 번째로 두 번째로 높은 순 위 등)이므로 우선 순위가 1 인 작업을 쿼리하면 항상 작동합니다. 문제는 우선 순위가 1 인 작업이 삭제되는 경우가 있으므로 우선 순위 2 작업이 가장 높은 우선 순위가됩니다 (중복 우선 순위를 가질 수없고 우선 순위는 항상 정수임).
TITLE JOBNUM EQID PRIOR DESC PEQID
newjob 123 HAQ7 1 fix this HAQ7
newjob 123 PDL 2 clean this HAQ7
newjob 123 ACCH 3 move this HAQ7
: 그것은 3 개 작업이있는 경우
SELECT j.title,
j.jobnum,
a.eqid,
a.prior,
a.desc,
b.eqid peqid
FROM JOB j
LEFT JOIN TASK a ON a.jobnum = j.jobnum
LEFT JOIN TASK b ON b.jobnum = j.jobnum
AND b.prior = 1
WHERE j.jobnum = '123'
ORDER BY a.prior
위의 쿼리는 다음과 같은 결과를 얻을 것이다 : 여기
우선 순위 1 작업에 따라 장비 ID를 당길 때 작동하는 샘플 쿼리입니다 그러나 우선 순위가 1 인 작업이 작업에서 삭제 된 경우 이제 작업에 장비 ID를 할당하는 가장 낮은 우선 순위의 작업을 찾아야합니다. 는 A 그룹과 조인select job.title, job.jobnum, task.eqid, task.prior, task.desc, tp.eqid peqid
from job
left join task on job.jobnum = task.jobnum
left join task tp on job.jobnum = tp.jobnum
and tp.prior = min(tp.prior)
내가 서브 쿼리를 사용하여 연구 :
는나는 기본적으로이 라인을 따라 뭔가를 시도했지만 작동하지 않습니다 (그룹 기능은 여기에 허용되지 않는 메시지를 제공합니다) 기능을 수행하지만 내가 성취하려는 것을 위해 작동하는 것을 찾지 못하는 것 같습니다. 어떤 도움이라도 대단히 감사하겠습니다.
오라클에서 작동 할 수있다? 이것은 계층 적 쿼리이므로 11gR2까지 Oracle에서는 재귀 CTE가 지원되지 않습니다. –
오라클의 버전은 10gR2입니다. – pablo