[僅供參考,這不是作業—我想大家都認爲,因爲我努力以簡單的可讀形式來設置我的問題的格式?再次,不是作業。我在工作,只是想學習。謝謝。]如何編寫這個棘手的SQL查詢?
我很困難的一個。我是一個Java人,我不是一個SQL人,所以任何幫助,這是非常感謝!
我有一個項目表和任務表所示:
**PROJECT**
projectId
name
項目有很多任務:
**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"
我需要兩個查詢:
(1)對於給projectId,得到'當前任務'。當前任務是具有最小sequence
號碼的任務號碼,該號碼不完整。在我的例子中,getCurrentTask(projectId=100)
將返回taskId 260(因爲它是第一個不完整的)。
(2)對於給定的userId,獲取他被分配給「當前任務」的項目列表。在我的例子中,getProjectsForUserId(userId=57)
會返回projectId 100; getProjectsForUserId(userId=58)
不會返回任何內容。
沒有什麼棘手的,只是瞭解內部連接和聚合函數。 –
你的例子似乎不正確的我:我不明白爲什麼getProjectsForUserId(58)應該什麼都不返回。謹慎闡述? – DocJones
@DocJones - getProjectsForUserId(58)不會返回任何內容,因爲userId 58未分配給「當前任務」。任務「安裝窗口」是當前的任務。系統工作的方式是,用戶58在「安裝窗口」之後可以開始他的「建造屋頂」摟板。謝謝。 –