我想獲得一個MYSQL查詢權利,它不是做我想做的。MYSQL查詢語法:左加入正確排除匹配
有桌子的人,任務表和任務表的人鏈接到任務。這是用於讓用戶將任務分配給人的頁面。由於不同的用戶正在處理不同的人員和/或任務組,因此表格具有用戶ID字段。對於每項任務,我想填充用戶可以分配給排除任何已分配人員的任務的人員列表。
表如下: 人
id|person|userid
任務
id|task|userid
taskperson
id|personid|taskid
我一起工作的查詢是:
SELECT p.*,p.id as pid
FROM `people` p
LEFT JOIN `taskperson` tp
on p.id = tp.personid
WHERE p.person LIKE '%$str%' AND p.userid = '1'AND tp.personid NOT IN
(SELECT tp.personid FROM `taskperson` tp WHERE userid = '1' AND tp.taskid = '33')
GROUP BY p.id
如果您刪除NOT IN子句,它會給你一個人員列表,但不會排除已經分配的人員。
如果包含NOT IN子句,當表中沒有行時,有問題的用戶的taskperson(即沒有人被分配給任務),它不顯示任何人,即返回零行。它應該顯示所有人在這種情況下。
任何人都可以看到我需要改變這個?
感謝您的任何建議
嘗試將內部查詢中的任務人員表的別名更改爲tp1。可能會導致ambigiuos - 類似於'SELECT tp1.personid FROM'taskperson' tp1' –