【问题标题】:MySQL records from second query not showing if first query returns (semi-)empty in PHP如果第一个查询在 PHP 中返回(半)空,则来自第二个查询的 MySQL 记录未显示
【发布时间】:2020-06-03 22:40:55
【问题描述】:

我正在为我工​​作的公司创建一个工具,用于检查我们公寓的入住率。目的是查看当前租户,他的合同何时开始以及何时结束,以及是否已经有新租户(以及新租户开始租房的日期)。

为此,我从我们的“公寓”数据库中提取数据,该数据库离开了我们的“租户”数据库。我首先运行以下查询(在 PHP 中)以列出当前占用公寓的所有租户,方法是检查开始日期是否在过去,结束日期是否在未来。因为我想列出每间公寓(即使它们没有被占用),所以我还要选择 'startdate_true' 为 NULL 的公寓:

$tenantquery = "
SELECT * 
  FROM apartments 
  LEFT 
  JOIN tenants 
    ON apartments.apartmentno = tenants.currentlyrenting 
 WHERE startdate_true IS NULL 
    OR startdate_true < CURDATE() 
   AND enddate_true > CURDATE() 
ORDER BY apartments.apartmentid ASC
";

这将返回(如预期的那样)所有公寓以及它们是否被占用。在 PHP while 循环的帮助下,我将其输出到 HTML 表中。

接下来,我想看看在当前租户之后是否已经有新租户将占用该公寓。为此,我在 while 循环的 inside 中运行以下查询:

$nextquery = "
SELECT * 
  FROM apartments 
  LEFT 
  JOIN tenants 
    ON apartments.apartmentno = tenants.currentlyrenting 
 WHERE apartments.apartmentno = '" . $row['apartmentno'] . "' 
   AND startdate_true > CURDATE()
";

在这里,我选择当前处于 while 循环中的公寓,并从数据库中获取未来开始日期的租户。此查询正确输出,但前提是公寓已被占用。例如:

Apartment: **1A**
Status: **Occupied**
Tenant: **John Doe**
End date: **2020-06-30**
Next tenant: **Jane Doe**
Startdate next tenant: **2020-07-01**

但是,每间目前未被占用但将来会被占用的公寓都没有列出“未来租户”,它只是什么都不返回。例如:

Apartment: **1B**
Status: **Not occupied**
Tenant: **none**
End date: **none**
Next tenant: **none**
Startdate next tenant: **none**

在我的 PHPMyAdmin 中运行第二个查询(以检查未来的租户)时,它会返回我想要的结果,但在 PHP 中它不会。我觉得很奇怪,如果所述公寓已经被占用,它只会输出未来的租户。

有人知道我该如何解决这个问题吗?提前致谢!

【问题讨论】:

标签: php mysql


【解决方案1】:

虽然它不一定能解决您的问题,但这里有一个有效查询的示例:

SELECT c.olumns
     , y.ou
     , a.ctually
     , w.ant  
  FROM apartments a
  LEFT 
  JOIN tenants t
    ON t.currentlyrenting = a.apartmentno 
   AND ( t.startdate_true IS NULL 
      OR ( t.startdate_true < CURDATE() AND t.enddate_true > CURDATE() )
       )
 ORDER 
    BY a.apartmentid ASC

【讨论】:

    猜你喜欢
    • 2012-10-10
    • 2018-12-18
    • 1970-01-01
    • 2021-02-27
    • 1970-01-01
    • 2015-03-16
    • 2013-10-19
    • 2015-02-17
    • 1970-01-01
    相关资源
    最近更新 更多