MYSQLクエリを正しく取得しようとしていますが、希望どおりに動作していません。
人の表、タスクの表、および人の表をタスクにリンクさせます。これは、ユーザーがユーザーをタスクに割り当てることができるページ用です。さまざまなユーザーがさまざまなグループの人々やタスクを操作しているため、テーブルにはユーザーIDフィールドがあります。タスクごとに、ユーザーがタスクに割り当てることができる人のリストを作成して、すでに割り当てられている人を除外したいと思います。
表は次のとおりです。
id|person|userid
タスク
id|task|userid
タスクパーソン
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句を含めると、テーブルに行がない場合、つまり問題のユーザーのタスクパーソン、つまりタスクに割り当てられているユーザーがいない場合、ユーザーは表示されません。つまり、ゼロ行が返されます。その場合はすべての人に表示されます。
誰かが私がこれを変更する必要がある場所を見つけることができますか?
提案をありがとう