我在工作組中的成員名單。該團隊可以有1個領導或2個共同領導。根據類似記錄的返回值存在
表:位置
Position_ID | Position_Name
表:參與
Position_ID | Project_ID | Person_ID
在位置表,Position_ID '7' 有Position_Name「負責人/聯合領導者。
假設有約翰(PERSON_ID = 5)誰需要與PROJECT_ID = 2項目的一部分,並在該項目中,他有Position_ID = 7
如果吉姆(PERSON_ID = 9),誰也參與該項目(Project_ID = 2)並且在該位置(Position_ID = 7)服務,John與Person_ID = 5的位置是「共同領導者」。返回數組(person_id => 5,name => John,position =>副領導,position_id => 7,project_id => 2)
如果沒有,John的位置是'Leader'。返回陣列(爲person_id => 5,名稱=>約翰,位置=>組長position_id => 7,PROJECT_ID => 2)
我的理由至今:
從參與選擇,加入會員以獲取會員詳細信息並加入職位以獲取職位名稱。
如果職位ID不是7,這意味着它不是領導者/副領導者案例,那麼就讓它成爲。
如果位置ID是7,如果存在具有相同位置ID和項目ID但不同人員ID的記錄,則檢入Involvement。
如果存在,則將後半部分從位置#7名稱中刪除並僅返回「共同領導者」。如果沒有,則切斷前半部分,只返回「領導者」。
問題:我不知道如何表達「另一條記錄的人員ID與當前記錄的人員ID不同」。
簡體MySQL的
SELECT
IF(`i`.position_id = 7,
IF(EXISTS(SELECT 1 FROM `i` WHERE ????),
SUBSTRING...,
SUBSTRING...)
,po.`name`)
AS `position`,
FROM `involvements` i
JOIN `members` m ON m.`id` = i.`person_id`
JOIN `positions` po ON po.`id` = i.`position_id`
WHERE i.`project_id` = 2
對不起,您如何確定哪一位是副領導? – Strawberry
如果在Involvement表中有兩行具有相同的Project_ID和相同的Position_ID但不同的Person_ID。 –
我想我需要可視化所需的結果,因爲我可以看到多種方式來返回共同領導者記錄,但我不確定你期望在數據集中。你能提供一個預期結果的樣本嗎?如果共同領導人存在,對於左側加入到位置後的參與和成員來返回附加列。根據人員ID尚未在記錄中定義的位置加入。但我不知道是否需要添加列或其他不同的東西... – xQbert