現在ユーザーに割り当てられていないジョブを選択しようとしています。
Users table: id | name
Jobs: id | name
Assigned: id | user_id | job_id | date_assigned
現在取られていない仕事をすべて選びたい。例:
ユーザー:
id | name
--------------
1 | Chris
2 | Steve
ジョブズ
id | name
---------------
1 | Sweep
2 | Skids
3 | Mop
割り当てられた
id | user_id | job_id | date_assigned
-------------------------------------------------
1 | 1 | 1 | 2012-01-01
2 | 1 | 2 | 2012-01-02
3 | 2 | 3 | 2012-01-05
2人に同じ仕事を割り当てることはできません。したがって、クエリは
[1, Sweep]
クリスが1日後にスキッドに引っ越して以来、誰もそれに取り組んでいないので。
ここのところ:
SELECT
*
FROM
jobs
WHERE
id
NOT IN
(
SELECT
DISTINCT(job_id)
FROM
assigned
ORDER BY
date_assigned
DESC
)
ただし、このクエリは同じデータセットに対してNULLを返します。現在作業中ではないため、スイープジョブが現在開いていることに対処していません。