Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL查询一个月内的可用约会时段_Mysql_Sql_Database_Dynamic Sql - Fatal编程技术网

Mysql SQL查询一个月内的可用约会时段

Mysql SQL查询一个月内的可用约会时段,mysql,sql,database,dynamic-sql,Mysql,Sql,Database,Dynamic Sql,目前我有一个问题: select a.day_of_week, a.time, a.id, '2012-01-10' as scheduleDate, a.max_customers, (SELECT count(b.id) from appointments b where b.date = '2012-01-10' AND b.schedule_id = a

目前我有一个问题:

select a.day_of_week,
       a.time,
       a.id,
       '2012-01-10' as scheduleDate,
       a.max_customers,
       (SELECT count(b.id) 
        from appointments b 
        where b.date = '2012-01-10' AND 
              b.schedule_id = a.id) as current_customers 
from schedules a 
where a.showroom_id = 1 and
      a.day_of_week = DATE_FORMAT('2012-01-10','%W')
假设“2012-01-10”是可变的

我们有一个日历应用程序。当用户单击某一天时,将运行此查询以返回插槽列表和当前预订的人数(当前客户)

这里有一个怪癖——现在他们希望能够一次找回整整一个月。目前,我们的开发人员基本上通过PHP中的FOR循环执行30个查询

我曾考虑创建一个存储过程来实现这一点,但您仍然在使用循环。工会是另一种选择,但我认为这是一个大问题

有没有人知道如何创建一个查询,该查询将在一个月内的所有天数或可变天数内运行上述内容

表格结构- 任命

字段类型允许空默认值 id int(11)编号
客户id int(11)编号
员工id int(11)是 附表11编号
日期编号
结果(11)是 注释文本编号
是否为1号活动tinyint(1) 在时间戳0000-00-00:00:00处创建 在时间戳0000-00-00:00:00处更新

时间表

字段类型允许空默认值 id int(11)编号
展厅标识(11)编号
一周中的一天枚举(“星期一”、“星期二”、“星期三”、“星期四”、“星期五”、“星期六”、“星期日”)否
时间号
最大客户数(11)无
是否为1号活动tinyint(1) 在时间戳0000-00-00:00:00处创建
更新了时间戳为0000-00-00 00:00:00的\u。根据对@sqlvars子查询工作原理的说明,请查看类似的预订查询。子查询只需查看系统中的任何表,就可以获取您想要出去的任意天数的记录。。。在这个样本中,30天。您只需更改“2012-01-10”的开始日期,或使用“current_date()”,使其始终从当前日期+30开始,并且不需要其他参数

select
      a.day_of_week, 
      a.time, 
      a.id, 
      @r as scheduleDate, 
      a.max_customers, 
      (SELECT count(b.id) 
          from appointments b 
          where b.date = @r 
          AND b.schedule_id = a.id) as current_customers 
   from
      ( SELECT 
                 @r:= date_add(@r, interval 1 day ) OpenDate
            FROM 
                 (select @r := '2012-01-10') vars,
                schedules limit 30 ) JustDates,
      schedules a 
   where 
          a.showroom_id = 1 
      and a.day_of_week = DATE_FORMAT( @r,'%W')

根据对我的@sqlvars子查询如何工作的说明,看一看类似的预订查询。子查询只需查看系统中的任何表,就可以获取您想要出去的任意天数的记录。。。在这个样本中,30天。您只需更改“2012-01-10”的开始日期,或使用“current_date()”,使其始终从当前日期+30开始,并且不需要其他参数

select
      a.day_of_week, 
      a.time, 
      a.id, 
      @r as scheduleDate, 
      a.max_customers, 
      (SELECT count(b.id) 
          from appointments b 
          where b.date = @r 
          AND b.schedule_id = a.id) as current_customers 
   from
      ( SELECT 
                 @r:= date_add(@r, interval 1 day ) OpenDate
            FROM 
                 (select @r := '2012-01-10') vars,
                schedules limit 30 ) JustDates,
      schedules a 
   where 
          a.showroom_id = 1 
      and a.day_of_week = DATE_FORMAT( @r,'%W')

您能提供两个表的表结构吗?理解这些会更好…您能提供两个表的表结构吗?如果你能理解,那就更好了。。。