[참고로, 이것은 숙제가 아닙니다. — 간단한 질문 형식으로 내 질문의 형식을 지정하기 때문에 모든 사람들이 그렇게 생각한다고 생각하십니까? 다시, 숙제가 아닙니다. 나는 직장에서 공부하려고 노력하고 있습니다. 고마워.]이 까다로운 SQL 쿼리는 어떻게 작성합니까?
나는 까다 롭습니다. 저는 Java 녀석입니다. 저는 SQL 녀석이 아니기 때문에 어떤 도움이든지 대단히 감사합니다!
는 그래서 같은 PROJECT 테이블과 작업 테이블이 : 예를 들어
**TASK**
taskId
projectId
description
userId // the user who is assigned the task
status // either "IN_PROGRESS" or "COMPLETE"
sequence // the numeric sequence of the TASK in the PROJECT
:
Project
projectId=100
name="Build House"
Task
taskId=250 // task IDs are not necessary in numerical order
sequence=1
description="Pour Foundation"
userId=55
status="COMPLETE"
Task
taskId=240
sequence=2
description="Build walls"
userId=56
status="COMPLETE"
Task
taskId=260
sequence=3
description="Install windows"
userId=57
status="IN_PROGRESS"
Task
taskId=245
sequence=4
description="Build roof"
userId=58
status="IN_PROGRESS"
나는 두 개의 쿼리가 필요
**PROJECT**
projectId
name
프로젝트는 많은 작업이 있습니다 :
(1) 주어진 projectId, '현재 작업'을 가져옵니다. 현재 작업은 완료되지 않은 번호가 가장 작은 sequence
번호의 작업 번호입니다. 내 예에서는 getCurrentTask(projectId=100)
이 taskId 260을 반환합니다 (처음에는 불완전합니다).
(2) 주어진 사용자 ID에 대해 '현재 작업'에 할당 된 프로젝트 목록을 가져옵니다. 내 예에서 getProjectsForUserId(userId=57)
은 projectId 100을 반환합니다. getProjectsForUserId(userId=58)
은 아무 것도 반환하지 않습니다.
내부 조인 및 집계 함수에 대해 배우기 만하면됩니다. –
당신의 예제가 나에게 잘못된 것 : 나는 getProjectsForUserId (58)가 반환해야하는 이유를 모르겠다. 정교한 케어? – DocJones
@DocJones - getProjectsForUserId (58)는 userId 58이 '현재 작업'에 할당되지 않았기 때문에 아무 것도 반환하지 않습니다. 작업 "설치 창"이 현재 작업입니다. 시스템이 작동하는 방식은 사용자 58이 "Windows 설치"가 완료된 후 "지붕 만들기"작업을 시작할 수 있다는 것입니다. 감사. –