我目前正在開發一個簡單的員工調度工具,並且遇到SQL查詢問題。爲了解釋我的問題,請使用這兩個非常抽象的表格。從左邊加入的特定日期中選擇行
第一個表只是由員工
employees ====================== empId | name | ... ---------------------- 10 | Scott | 11 | Schrute | 12 | Halpert | 13 | Howard |
在第二個表你會發現分配的任務通過一天的每個員工。
tasks ============================================== tasId | name | task | date | ... ---------------------------------------------- 10 | Scott | Support | 2014-02-17 | 11 | Scott | Bugfix | 2014-02-18 | 12 | Halpert | Bugfix | 2014-02-17 | 13 | Halpert | Develop | 2014-02-18 | 14 | Howard | Support | 2014-02-17 |
現在我想知道什麼是員工上月17工作或自己有沒有計劃在這一天的任務。我使用下面的SQL查詢來做到這一點。
SELECT e.name, t.task
FROM employees e LEFT JOIN tasks t ON e.name = t.name
WHERE date IS NULL OR date = DATE('2014-02-17')
結果提供正是我需要的:
name | task -------------------- Scott | Support Schrute | NULL Halpert | Bugfix Howard | Support
而現在我的問題。如果我要見2月18日我得到這個結果集的任務:
name | task -------------------- Scott | Bugfix Schrute | NULL Halpert | Develop
的理由,這是顯而易見的,霍華德的任務的日期既不是NULL也不等於2014年2月18日。什麼將是獲得理想效果的最佳方式?
我使用MySQL和PHP。
(很抱歉的愚蠢的冠軍,我也想不出什麼更好的主意。)
完美的,正是我所需要的。非常感謝! – cheeZer