【发布时间】: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 中它不会。我觉得很奇怪,如果所述公寓已经被占用,它只会输出未来的租户。
有人知道我该如何解决这个问题吗?提前致谢!
【问题讨论】:
-
请使用换行符。这很难读。
-
@GhostGambler 我很抱歉!现在应该好了。
-
如果你有一些括号,你会把它们放在哪里?
-
您可能还想将
AND startdate_true > CURDATE()上移一行