我有一份准备好的声明,它正在抓住存储设施中的租金并将它们放在一个列表中,以便在它们即将到期时跟踪后端。我遇到的问题是,当语句输出列表时,如果多个人在到期之前有相同的天数,则该列表仅显示其中一个租户。我有这是我准备好的声明:
SELECT rentals.rental_startdate,
rentals.rental_renewdate,
rentals.rental_duedate,
rentals.rental_latedate,
rentals.rental_status,
rentals.rental_balance,
units.unit_id,
units.unit_number,
units.unit_status,
users.user_id,
users.user_fname,
users.user_lname,
@var := DATEDIFF(rentals.rental_renewdate,CURRENT_DATE) AS days
FROM rentals
INNER JOIN units ON units.unit_id = rentals.unit_id
INNER JOIN users ON users.user_id = rentals.user_id
WHERE rentals.rental_status=?
GROUP BY rentals.rental_renewdate HAVING days>=0 AND days<=?
ORDER BY rentals.rental_renewdate ASC
问题似乎来自HAVING days>=0 AND days<=?
。天数等于通知期间,通知期间在变量中定义为5天。当我把它拿下来的时候,我看到我们所有人都会在5天或10天之前到期,因为我们并不真正想要它,但它解决了只看到一个人将要到期的问题。真的有2天。有什么东西看起来不合适会引起这个问题吗?我使用while($select -> fetch()) {
来选择行。
答案 0 :(得分:1)
您需要将名称数据添加到GROUP BY子句中。
GROUP BY users.user_fname, users.user_lname, rentals.rental_renewdate
应该做的伎俩