2015-07-10 80 views
1

我想根據月份和年份搜索數據。然後,它將統計Book_id的相同ID。在PHP中搜索和計數數據

我有問題來計算每月的Book_id。該查詢將計算包括每月的整個記錄​​,這不是我想要的結果。

$res2 = mysql_query("SELECT DISTINCT Date_borrow, Book_name as nmBook, Book_id as b_id, count(Book_name) AS count 

FROM transaksi 

GROUP BY nmBook 

HAVING count > 1 

ORDER BY COUNT DESC "); 

$rowss = mysql_fetch_array($res2); 

感謝您的幫助。

+0

爲什麼transaksi表中有book_name? – Drew

+0

因爲我想顯示book_name @DrewPierce – jasmine

+0

的輸出,但我知道它是非標準化的數據,可能會產生很多問題 – Drew

回答

0

我正在射擊在它不知道你完整的數據模型

SELECT DISTINCT Date_borrow, Book_name as nmBook, Book_id as b_id, 
count(Book_name) AS count 
FROM transaksi 
GROUP BY nmBook 
HAVING count > 1 
ORDER BY COUNT DESC 

應該是:

SELECT Date_borrow, Book_name as nmBook, Book_id as b_id, 
count(Book_name) AS counter 
FROM transaksi 
GROUP BY Book_name,Date_borrow,book_id 
HAVING count(Book_name) > 1 
ORDER BY `counter` DESC; 

DISTINCT和GROUP BY是互相排斥的:一旦你使用GROUP BY,或者適用所有字段上的函數或添加GROUP BY中的字段。 HOOKING COUNT(Book_name):COUNT需要一個參數,因此book_name在這種情況下與SELECT語句中的相同。

在ORDER BY中使用剛創建的別名:測試。可能是因爲你也需要使用COUNT(book_name)。

使用保留字「COUNT」作爲別名:避免在表名,列名,函數名等中使用任何聽起來像函數或代碼的術語。創建您自己的命名標準,避免使用(可能)保留關鍵詞。