所以我有两张桌子。
表1被命名为“约会”,其中包含以下字段:ID
(int),TimeboxID
(int),Date
(日期)
表2被命名为'timebox',其中包含以下字段:ID
(int),Weekday
(int),StartTime
(varchar)
表1保留所有约会(Date
+ TimeboxID
组合),而表2定义了一周中每一天可用的时间段。
以下是我的问题:如何在1个查询中找出哪些日期有可用的免费时段(以及有多少个)?
PS。仅显示字段StartTime
,此处没有意义。
答案 0 :(得分:1)
我应该使用类似的东西:
SELECT workdays.date, COUNT(DISTINCT timebox.ID) AS FreeTimeBoxes
FROM workdays
LEFT JOIN timebox ON (WEEKDAY(workdays.date) = timebox.Weekday)
LEFT JOIN appointment ON (workdays.date = appointment.date AND timebox.ID = appointment.TimeboxID)
WHERE appointment.ID IS NULL
GROUP BY workdays.date
不知道你是否用自动化的东西替换表工作日