Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.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
Php 返回查询结果,并在查询中使用union_Php_Mysql_Codeigniter_Codeigniter 3 - Fatal编程技术网

Php 返回查询结果,并在查询中使用union

Php 返回查询结果,并在查询中使用union,php,mysql,codeigniter,codeigniter-3,Php,Mysql,Codeigniter,Codeigniter 3,我在数据库中有3个这样的表 表可用性 availability_id | date | price | room_id | closed ------------------------------------------------------- 1 | 2017-01-24 | 75 | 8 | 0 2 | 2017-01-24 | 95 | 9 | 0 3 |

我在数据库中有3个这样的表

可用性

availability_id | date       | price | room_id | closed
-------------------------------------------------------
        1       | 2017-01-24 |   75  |  8      | 0
        2       | 2017-01-24 |   95  |  9      | 0
        3       | 2017-01-25 |   80  | 73      | 0
        4       | 2017-01-25 |   70  | 65      | 0
        5       | 2017-01-26 |   85  | 42      | 0
        6       | 2017-01-26 |   65  | 21      | 0
offer\u day

plan_id | offer_id date | price      | room_id |    | closed 
------------------------------------------------------------
 1      |       12      | 2017-01-24 |   70    |  8 |   0
 2      |       23      | 2017-01-24 |   75    |  9 |   0
 3      |       12      | 2017-01-25 |   70    |  8 |   1
 3      |       14      | 2017-01-25 |   70    |  8 |   0
 4      |       34      | 2017-01-25 |   75    |  9 |   0
 5      |       43      | 2017-01-25 |   80    | 73 |   0   
 6      |       54      | 2017-01-25 |   85    | 65 |   0 
 7      |       65      | 2017-01-26 |   75    | 42 |   0
 8      |       44      | 2017-01-26 |   70    | 21 |   0
package_id | date       | price | room_id | closed
--------------------------------------------------
    1      | 2017-01-24 |  120  |   8     | 0
    2      | 2017-01-24 |  125  |   9     |  0
    3      | 2017-01-25 |  135  |  73     | 0
    4      | 2017-01-25 |  130  |  65     | 0
    5      | 2017-01-26 |  125  |  42     | 0 
    5      | 2017-01-26 |  120  |  21     | 0 
package\u day

plan_id | offer_id date | price      | room_id |    | closed 
------------------------------------------------------------
 1      |       12      | 2017-01-24 |   70    |  8 |   0
 2      |       23      | 2017-01-24 |   75    |  9 |   0
 3      |       12      | 2017-01-25 |   70    |  8 |   1
 3      |       14      | 2017-01-25 |   70    |  8 |   0
 4      |       34      | 2017-01-25 |   75    |  9 |   0
 5      |       43      | 2017-01-25 |   80    | 73 |   0   
 6      |       54      | 2017-01-25 |   85    | 65 |   0 
 7      |       65      | 2017-01-26 |   75    | 42 |   0
 8      |       44      | 2017-01-26 |   70    | 21 |   0
package_id | date       | price | room_id | closed
--------------------------------------------------
    1      | 2017-01-24 |  120  |   8     | 0
    2      | 2017-01-24 |  125  |   9     |  0
    3      | 2017-01-25 |  135  |  73     | 0
    4      | 2017-01-25 |  130  |  65     | 0
    5      | 2017-01-26 |  125  |  42     | 0 
    5      | 2017-01-26 |  120  |  21     | 0 
我有这样的疑问:

SELECT a.price 
FROM availability a
WHERE a.closed = 0 AND a.date >= '2017-01-24' AND a.date <= DATE_SUB('2017-01-26', INTERVAL 1 DAY)

UNION

SELECT 0.price 
FROM offer_day o
WHERE o.closed = 0 AND o.date >= '2017-01-24' AND o.date <= DATE_SUB('2017-01-26', INTERVAL 1 DAY)

UNION

SELECT p.price 
FROM package_day p
WHERE p.closed = 0 AND p.date >= '2017-01-24' AND p.date <= DATE_SUB('2017-01-26', INTERVAL 1 DAY)
选择一个价格
从可用性a

其中a.closed=0,a.date>='2017-01-24'和a.date='2017-01-24'和o.date='2017-01-24'和p.date您在评论中询问,如果关闭的记录为1,则您不想从表中获取任何记录。您可以进行子查询以检查是否有任何不需要的值。 这里有一个例子

SELECT a.price 
FROM availability a
WHERE a.closed = 0 AND a.date >= '2017-01-24' AND a.date <= DATE_SUB('2017-01-26', INTERVAL 1 DAY) and a.closed NOT IN (select closed FROM availability WHERE closed = 1 AND date >= '2017-01-24' AND date <= '2017-01-26')

UNION

SELECT o.price 
FROM offer_day o
WHERE o.closed = 0 AND o.date >= '2017-01-24' AND o.date <= DATE_SUB('2017-01-26', INTERVAL 1 DAY) and o.closed NOT IN (select closed FROM offer_day WHERE closed = 1 AND date >= '2017-01-24' AND date <= '2017-01-26')

UNION

SELECT p.price 
FROM package_day p
WHERE p.closed = 0 AND p.date >= '2017-01-24' AND p.date <= DATE_SUB('2017-01-26', INTERVAL 1 DAY) and p.closed NOT IN (select closed FROM package_day WHERE closed = 1 AND date >= '2017-01-24' AND date <= '2017-01-26')
选择一个价格
从可用性a

其中a.closed=0,a.date>='2017-01-24'和a.date='2017-01-24'和date='2017-01-24'和o.date='2017-01-24'和date='2017-01-24'和p.date='2017-01-24'和date如果您不想要房间,可以使用Blow查询

SELECT a.price 
FROM availability a
WHERE a.closed = 0 AND a.date >= '2017-01-24' AND a.date <= DATE_SUB('2017-01-26', INTERVAL 1 DAY) and a.room_id NOT IN (select room_id FROM availability WHERE closed = 1 AND date >= '2017-01-24' AND date <= '2017-01-26')

UNION

SELECT o.price 
FROM offer_day o
WHERE o.closed = 0 AND o.date >= '2017-01-24' AND o.date <= DATE_SUB('2017-01-26', INTERVAL 1 DAY) and o.room_id NOT IN (select room_id FROM offer_day WHERE closed = 1 AND date >= '2017-01-24' AND date <= '2017-01-26')

UNION

SELECT p.price 
FROM package_day p
WHERE p.closed = 0 AND p.date >= '2017-01-24' AND p.date <= DATE_SUB('2017-01-26', INTERVAL 1 DAY) and p.room_id NOT IN (select room_id FROM package_day WHERE closed = 1 AND date >= '2017-01-24' AND date <= '2017-01-26')
选择一个价格
从可用性a

其中a.closed=0和a.date>='2017-01-24'和a.date='2017-01-24'和date='2017-01-24'和o.date='2017-01-24'和date='2017-01-24'和p.date='2017-01-24'和日期您有条件->x.closed=0,在您的查询中,您将获得所有已关闭的记录=0ya我知道。但是,我想在我输入的日期范围内,如果Column closed中有值1,我不想显示所有记录@Rafaelshkembi您的查询有什么问题?输出是什么?您希望得到什么输出?如果Column closed中有值1,我不想显示所有记录@没有人吗?您想要一个空的结果集?如果有任何数据o.closed=1,则可能不起作用,然后不要在给定数据中带来任何单个数据事件o.closed=0其他值range@krishnpatel是的,我知道,但OP询问说,他希望获取closed=0的所有记录,但如果表中存在closed=1的记录,则不获取任何结果。我已经放弃了子查询中的日期过滤器,我将更新我的answer@Antonio现在我明白了。请稍等几分钟,我会更新我的ansewer@RafaelShkembi你现在可以更新你的ans了吗?他想知道你的答案了吗?我只是把Column offer\u id改为plan\u id,并把offer\u id添加为新Column。请再看看我的问题。我已经给出了一个想法,你们可以用自己的方式提出新的问题