我有一份准备好的声明,该声明正在存储设施中获取租金,并将其放入列表中,以便在到期时在后端进行跟踪。我遇到的问题是,当报表输出列表时,如果超过一个人的到期日数相同,则列表仅显示其中一位租户。这是我准备好的声明:
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 天内到期,这是我们真正不想要的,但它解决了只看到一个人在 3 天内到期的问题。确实有 2. 是否有任何看起来不合适的地方会导致此问题?我正在使用while($select -> fetch()) {
选择行。
最佳答案
您需要将名称数据添加到 GROUP BY 子句中。
按 users.user_fname、users.user_lname、rentals.rental_renewdate 分组
应该可以解决问题
关于php - 准备好的语句未获取所有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39000370/