如果表中字段的总和小于X,则选择行

时间:2012-05-28 12:07:48

标签: php mysql sql

这是我的第一个问题,如果我做错了,请原谅我。我一直试图想出上述问题的查询,我似乎无法得到任何结果。

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中可能有一种更优雅的方式。

我希望这能够很好地描述问题。这背后的原因是我需要找到“老虎机”仍然可用的日期,即未预订的日期。

先谢谢你的帮助。

1 个答案:

答案 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代码中这样做。