我的数据库中有2个表。 Table1由Work_ID,Actual_Work_Date组成。 表2由Work_ID,Scheduled_Date组成。
以下是一个案例:
表1
Work_ID |的 Actual_Work_Date
10000 | 2014年2月25日
10001 | 2014年2月13日
表2
Work_ID |的 Scheduled_Date
10000 | 2014-01-10
10000 | 2014年3月1日
10001 | 2014年1月22日
10001 | 2014年2月13日
对于Work_ID=10000
,我们未能按照第一个时间表(2014-01-10)执行工作,因此我们重新安排成为2014-03-01
。
但有些我们如何能够在2014-02-25上完成工作。
在我的网站上,我想查看本月未安排但在本月执行的工作清单。如何使这样的列表只显示Work_ID = 10000而不显示Work_ID = 10001? 我做了以下但没有工作:
$query = "
SELECT a.Work_ID
FROM Table1 a, Table2 b
WHERE a.Actual_Work_Date LIKE '2014-02%'
AND b.Scheduled_Date NOT LIKE '2014-02%'
AND a.Work_ID = b.Work_ID ";
感谢您的帮助。
答案 0 :(得分:0)
这应该按预期工作,可能不会很快但应该给出正确的结果。
基本上,所有工作都来自Table1,这是在2月份完成的,然后删除了2月份安排的所有工作(任何一个时间表)
SELECT Work_ID
FROM Table1
WHERE MONTH(Actual_Work_Date) = 2
AND Work_ID NOT IN (SELECT Work_ID
FROM Table2
WHERE MONTH(Scheduled_Date) = 2)
答案 1 :(得分:0)
不确定MySQL的语法,但这可能会有所帮助。
SELECT
a.*
FROM Table a
INNER JOIN Table b ON a.Work_id = b.Work_id
WHERE DATE_FORMAT(a.Actual_Work_Date,"%c") = your_month_number AND DATE_FORMAT(b.Scheduled_Date,"%c") <> your_month_number AND a.Work_id = 10000
使用此链接可获取有关日期时间功能的更多信息。 MySQL DateTime Function