Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.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 联合所有地点日期条款_Mysql_Sql_Sql Order By_Union All_Having Clause - Fatal编程技术网

Mysql 联合所有地点日期条款

Mysql 联合所有地点日期条款,mysql,sql,sql-order-by,union-all,having-clause,Mysql,Sql,Sql Order By,Union All,Having Clause,我的问题 SELECT RoomType, date FROM Superior WHERE (date >= '2012-06-26'AND date < '2012-06-30')AND (Avail > '0') UNION SELECT RoomType, date FROM Deluxe WHERE (date >= '2012-06-26'AND date < '2012-06-30')AND (Avail > '0') UNION SELECT

我的问题

SELECT RoomType, date FROM Superior WHERE (date >= '2012-06-26'AND date < '2012-06-30')AND (Avail > '0')
UNION
SELECT RoomType, date FROM Deluxe WHERE (date >= '2012-06-26'AND date < '2012-06-30')AND (Avail > '0')
UNION
SELECT RoomType, date FROM SuperDeluxe WHERE (date >= '2012-06-26'AND date < '2012-06-30')AND (Avail > '0')
ORDER BY date
HAVING COUNT(date, INTERVAL 3 DAY) 
是的,它是MySQL,我只是想证明自己,我可以帮助我的叔叔完成这项工作。你知道我不是季节性的,只是个初学者。你猜对了,三张桌子都模棱两可。我有另一个现场资料,记录可用房间的数量。预订完成后,它会自动计算可用房间

我当前的查询使用房间类型选项选择,该选项只能为每个查询生成一个房间类型的可用性。在上面,我计划进行1次查询并生成日期范围内可用的任何房间类型。当我使用上面的联合查询时,我遇到的问题是,我得到的结果还包括可用性为=0的范围内的一个日期

我在尝试这样的事情

SELECT RoomType, COUNT( date )
FROM Superior
WHERE date >= '2012-06-26'
  AND date < '2012-06-30'
  AND Avail > '0'
UNION
SELECT RoomType, COUNT( date )
FROM Deluxe
WHERE date >= '2012-06-26'
  AND date < '2012-06-30'
  AND Avail > '0'
UNION
SELECT RoomType, COUNT( date )
FROM SuperDeluxe
WHERE date >= '2012-06-26'
  AND date < '2012-06-30'
  AND Avail > '0'
GROUP BY date
HAVING COUNT( 4 )
看起来我越来越近了。我尝试了MAX date,它给出的日期有4行,但它仍然显示1行可用性大于0的房间类型

我还尝试使用COUNT DISTINCT date=4 结果仍然显示字段日期,其中行数不等于4,并且仅与GROUP BY一起过滤组,但您没有正在使用的组

在每个select中需要一个直接的WHERE子句,以及一个可以订购的包装select:

select * from (
    SELECT RoomType, date 
    FROM Superior
    WHERE date >= '2012-06-26' 
    AND date < '2012-06-30'
    AND Avail > 3 -- specify avail range here
  UNION
    SELECT RoomType, date
    FROM Deluxe
    WHERE date >= '2012-06-26' 
    AND date < '2012-06-30'
    AND Avail > 3 -- specify avail range here
  UNION
    SELECT RoomType, date
    FROM SuperDeluxe
    WHERE date >= '2012-06-26' 
    AND date < '2012-06-30'
    AND Avail > 3 -- specify avail range here
) results
ORDER BY date
我将认真考虑将数据合并到一个表中,并添加一个列来区分三种预订类型,而不是拥有更多的表。它不仅可以使您的查询变得合理,而且当您获得新的预订类型时,您不必再创建另一个表。

仅使用GROUP BY筛选组,而不必使用组

在每个select中需要一个直接的WHERE子句,以及一个可以订购的包装select:

select * from (
    SELECT RoomType, date 
    FROM Superior
    WHERE date >= '2012-06-26' 
    AND date < '2012-06-30'
    AND Avail > 3 -- specify avail range here
  UNION
    SELECT RoomType, date
    FROM Deluxe
    WHERE date >= '2012-06-26' 
    AND date < '2012-06-30'
    AND Avail > 3 -- specify avail range here
  UNION
    SELECT RoomType, date
    FROM SuperDeluxe
    WHERE date >= '2012-06-26' 
    AND date < '2012-06-30'
    AND Avail > 3 -- specify avail range here
) results
ORDER BY date

我将认真考虑将数据合并到一个表中,并添加一个列来区分三种预订类型,而不是拥有更多的表。它不仅可以使您的查询变得合理,而且当您获得新的预订类型时,您不必再创建另一个表。

您使用的是什么数据库产品?MySQL?而且,这有一种属性分裂的味道——为什么有3个看起来完全相同的表?为什么不在一个表中添加一个列来指定Superior、Deluxe或SuperDeluxe?向我们展示表定义和示例数据。什么是可用性,0或1标志?它是一个描述可用天数的整数吗?由于在3个选择中的每个选择中都有where子句,只需删除HAVING语句即可。您使用的是哪种数据库产品?MySQL?而且,这有一种属性分裂的味道——为什么有3个看起来完全相同的表?为什么不在一个表中添加一个列来指定Superior、Deluxe或SuperDeluxe?向我们展示表定义和示例数据。什么是可用性,0或1标志?它是一个描述可用天数的整数吗?由于在3个选项中都有where子句,只需删除HAVING语句即可。不确定这是否能解决问题,因为规格相当模糊,但似乎方向正确。不过,您不需要将此查询封装在嵌套子查询中。不确定这是否能解决问题,因为规范相当模糊,但似乎方向正确。不过,您不需要将此查询包装在嵌套子查询中。