mysql - sql 查询查找可用日期

标签 mysql sql join

我不知道这有解决方案,或者我不知道要使用哪个搜索词。这是我的问题。我有 4 张 table 。哪些是

  • 可用 - 可用日期。
  • School_menu - 哪个菜单属于哪个学校。
  • 菜单 - 由项目组成的菜单。
  • Item - 常用订购项目。

我一直在使用下面的查询来生成可用日期。所以有人可以订购单一约会。例如:2015-12-17

SELECT DISTINCT
        *
FROM    Available AS a
        JOIN School_menu AS sm ON a.school_menu_id = sm.school_menu_id
        JOIN Menu AS m ON m.menu_id = sm.menu_id
        JOIN Item AS it ON m.menu_id = it.menu_id
WHERE   ( a.available_date BETWEEN '2015-12-27'
                           AND     '2016-02-05' )
        AND sm.sch_id = '7';
<小时/>

最近,我被告知要添加另一个功能。详细来说,

项目,

  • 披萨
  • 潜艇

如果用户可以在 12 月 12 日订购披萨,那么再次按一下按钮应该就可以在未来几天内订购披萨。 13 日或 14 日是否有披萨,可通过加入菜单的可用日期进行查询。 1 件不是问题。 2 件怎么样?我该如何为此编写查询?乍一看似乎并不复杂。所以,我写了一个查询

SELECT DISTINCT
        *
FROM    Available AS a
        JOIN School_menu AS sm ON a.school_menu_id = sm.school_menu_id
        JOIN Menu AS m ON m.menu_id = sm.menu_id
        JOIN Item AS it ON m.menu_id = it.menu_id
WHERE   ( a.available_date BETWEEN '2015-12-27'
                           AND     '2016-02-05' )
        AND sm.sch_id = '7'
        AND it.item_id IN ( 28, 31 )
        AND a.available_date != DATE(( '2016-01-05' ));

就这样搞乱了整个订购系统。

如何编写正确的查询!!谢谢

<小时/>

已添加,SQL Fiddle http://sqlfiddle.com/#!9/3f44d/1

最佳答案

我能够通过将可用日期分组在一起并计算组的计数并动态调整拥有计数来修复此查询。

<小时/>
SELECT DISTINCT *, COUNT(*) 
   FROM Available AS a JOIN School_menu AS sm ON 
     a.school_menu_id = sm.school_menu_id JOIN Menu AS m ON 
     m.menu_id = sm.menu_id JOIN Item AS it ON m.menu_id = it.menu_id 
WHERE (a.available_date BETWEEN '2015-12-27' AND '2016-02-05') 
 AND sm.sch_id = '7' AND it.item_id IN (26, 25, 28) 
 AND a.available_date != DATE(('2016-01-04')) GROUP BY a.available_date
HAVING COUNT (a.available_date) > XX
xx = Dyamic Count

关于mysql - sql 查询查找可用日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34350148/

相关文章:

使用数据库的 Java Spring 身份验证,如何删除角色模型?

mysql - 在 prestashop 的 MySQL 的哪个表中,我可以找到字段 Displayed text when in stock

java - Hibernate Criteria 多表

MySQL 用户定义的比较器

database - 将整体拆分为微服务数据库问题

php - php 页面中包含 feed rss 的图像

Mysql:如何查询类型为位的列?

SQL Server 2008 - 考虑自定义假期和周末,计算两个日期之间的业务分钟数

mysql - 如何选择给定多行匹配的数据?

.net - IsNull(Max(id)) 的最佳 Linq2Sql 等效项