酒店每月预订按酒店ID和酒店名称分组

时间:2014-05-07 19:03:53

标签: mysql

我需要一个MySQL字符串的帮助,我每个月都可以使用它为我的在线预订系统生成一个表格月度报告,显示报告标题为“yyyy-mm-dd的总酒店预订,并且在酒店ID中顺序排列第一列(以1000,1001开始增加1),第二列中的酒店名称,第3列中的城市,第4列中的州,第5列中的电子邮件地址以及列中月份的预订总数6。

在我的MySQL数据库中,我有一个名为sales的表,它具有以下关键变量的数据库结构:

FIELDS          TYPE        Notes

hotelid         VARCHAR(5)  Property ID (these are all digits)


hotelname       VARCHAR(35) Property name


booked          DATE        Date booked in yyyy-mm-dd format


ref             VARCHAR(16) Booking reference (alphanumeric e.g. Booking12345)


numitems        TINYINT(4)  Number of items


itemno                      Item number


city            VARCHAR(40)


state           VARCHAR(40)


email           VARCHAR(70)

我所拥有的字符串不适合我的要求如下:

“SELECT SUM(??), SUM(??) FROM sales WHERE arrdate>=’??’ AND depdate>=’??’ AND propid=??“我们会替换??使用取决于我们想要检索的字段或数据。

请帮我一个字符串,我可以立即使用它。 谢谢。 VELOX

1 个答案:

答案 0 :(得分:0)

您有几种选择:

  • 使用between in your query,即WHERE columname BETWEEN '2014-07-04 00:00:00' AND NOW()
  • 使用unsigned int而不是日期,因此使用时间戳,即WHERE columname BETWEEN '".$yourNumericTimestamp."' AND '".time()."'(php)

我通常使用时间戳,因为它们让我不那么担心格式化。

请注意,如果您不确定$yourNumericTimestamp是否为数字,则必须使用$db->real_escape_string($yourNumericTimestamp)进行包装。

编辑:太匹配您的示例查询: SELECT SUM(??), SUM(??) FROM sales WHERE arrdate BETWEEN ’??’ AND NOW() AND depdate BETWEEN ’??’ AND NOW() AND propid=??