2016-08-17 39 views
0

我準備好了一份聲明,該聲明抓取存儲設施中的租金並將它們放入列表中,以便在到期時跟蹤後端。我遇到的問題是,當聲明輸出清單時,如果不止一個人具有相同的天數直到他們到期,那麼該清單僅顯示其中一個租戶。我這是我事先準備好的聲明:準備好的陳述未取得所有結果

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()) {來選擇行。

+0

你在mysql監視器單獨運行查詢,看看結果是什麼?也許提取工作完美,查詢本身是「失去」記錄由於邏輯錯誤 –

+0

我認爲天是一個字符類型,所以你得到一個字符串比較 – Jens

+0

@MarcB我做到了,我得到的記錄相同我在網站上看到這是不正確的。 –

回答

1

您需要將名稱數據添加到GROUP BY子句中。

GROUP BY users.user_fname, users.user_lname, rentals.rental_renewdate

應該做的伎倆

+0

做到了,謝謝! –