这是我的第一个问题,如果我做错了,请原谅我。我一直试图想出上述问题的查询,我似乎无法得到任何结果。
SELECT SUM(slots) AS totals,date
FROM
(
SELECT start, end, date, slots
FROM 1000_appointments
WHERE date > NOW() AND HOUR(end) <= 12 AND employeeID='1000001'
) q
GROUP BY date HAVING totals < 6
这让我得到了插槽总数小于6的日子,这很好但我还需要该日期的所有行,如果可能的话,还需要表中没有条目的日期。我可以在php中进行排序和列表,但我想在mysql中可能有一种更优雅的方式。
我希望这能够很好地描述问题。这背后的原因是我需要找到“老虎机”仍然可用的日期,即未预订的日期。
先谢谢你的帮助。
答案 0 :(得分:2)
包装将为您获取所有行:
SELECT start, end, a.date, slots, totals
FROM 1000_appointments a
JOIN
(SELECT SUM(slots) AS totals,date
FROM 1000_appointments
WHERE date > NOW() AND HOUR(end) <= 12 AND employeeID='1000001'
GROUP BY date HAVING totals < 6
) t
where a.date = t.date
要获得不在表格中的日期并不容易。它可能需要使用游标。我建议你在PHP代码中这样做。