У меня есть подготовленный оператор, который захватывает аренду в хранилище и помещает их в список, чтобы отслеживать его в конце, когда они появятся. Проблема, с которой я столкнулась, заключается в том, что когда оператор выводит список, если более одного человека имеет одинаковое количество дней до их появления, в списке отображается только один из этих арендаторов. У меня это моя подготовленное заявление:Подготовленный отчет не получает все результаты
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()) {
для выбора строк.
вы запустите запрос отдельно на мониторе тузд, чтобы увидеть, что результаты? Может быть, выборка работает отлично, а сам запрос - «потерять» записи из-за логической ошибки. –
. Я думаю, что дни - это тип символа, поэтому вы получаете сравнение строк. – Jens
@MarcB. Я сделал, у меня есть те же записи, что Я вижу на веб-сайте, что неверно. –