2015-06-05 71 views
0

我想從我的任務表中刪除任務在哪裏任務ID是例如100和任務由創建的刪除用戶或他的團隊成員在用戶表中分配給他們的較小的user_role我該如何做這DELETE查詢與子選擇或左加入

我在想,如果像這樣的事情會做魔術或什麼是實現這一目標的正確方法?

DELETE FROM tasks t LEFT JOIN users u ON u.user_id = 1 WHERE task_id = 677 
AND createdby 
IN((SELECT u1.user_id FROM users u1 WHERE u1.user_team = u.user_team 
AND taskrspnsble 
IN((SELECT u2.user_id FROM users u2 WHERE u2.user_role <= u.user_role)) 
)) 
+0

對DELETE的左加入是非常罕見的事情?我想知道爲什麼。 – Strawberry

+0

我只是在尋找一種簡單的方法,只使用兩個外部因素(task_id,用戶)從我的db數據庫中刪除一個任務,但仍應用一些要求。這就是所有;-)你有更好的解決方案嗎? –

+1

也許你應該解釋一下你想要的邏輯。可能有更簡單的方式來表達它。但是,'刪除t。 。 .'可能會解決你的問題。 –

回答

0

我想我的邏輯解釋很清楚嗎?我只是想通了。這裏是正確的答案!

DELETE FROM tasks 

WHERE task_id = 1 
AND createdby IN(
       (SELECT u1.user_id FROM users u1 WHERE u1.user_team 
       IN 
       (SELECT u2.user_team FROM users u2 WHERE u2.user_role <= (SELECT u3.user_id FROM users u3 WHERE u3.user_id = 1) 
       ) 
       )) 
+0

我懷疑這是否做你認爲它做的任何事情。 – Strawberry