2012-01-17 47 views
1

我試圖將所有返回記錄的計數添加到我的查詢中,但有一些問題。這是一個非常大的查詢,所以我不會發布一切。MySQL /經典ASP - 記錄計數

當這個執行時,我得到的所有記錄,但計數rs.Fields(「totalRecCount」)總是返回1。任何人都可以看到我做錯了什麼,並建議修復?

這是頂部:

Set cmdConn = Server.CreateObject("ADODB.Command") 
Set cmdConn.ActiveConnection = Conn 
cmdConn.Prepared = True 

Const ad_varChar = 200 
Const ad_ParamInput = 1 
Const ad_Integer = 3 

selectClause = "SELECT COUNT(photoID) AS totalRecCount, photoID FROM photoSearch " 
whereClause = "WHERE photoStatus = 'Live' " 

這是底部部分

groupBy = "GROUP BY photoID " 
orderClause = "ORDER BY dateCreated DESC " 

SQL = selectClause & whereClause & groupBy & orderClause & limitClause 
cmdConn.CommandText = SQL 

Set rsPhotoSearch = cmdConn.Execute 
+3

所有你/我們需要知道的是最後的SQL子句。 – Hamish 2012-01-17 19:12:20

+0

你在'GROUP BY'上做了什麼'limitClause'? – 2012-01-17 19:17:28

+0

我不知道@ p.campbell,這就是我得到幫助的原因 – TheCarver 2012-01-17 19:23:45

回答

2

它,因爲你通過你要算非常的事分組返回1。刪除您的group by子句和photoId列,您將獲得您的記錄數。

group by告訴MySQL,「對於每個不同的PhotoID,請計算非空PhotoID的數量。」根據定義,這是1

+0

我需要選擇photoID列 – TheCarver 2012-01-17 19:21:38

+0

@MartinG - 然後選擇它。 MySQL允許你選擇不包含'group by'子句的列,儘管使用了聚合函數。這是我用過的任何時間唯一的RDBMS。無論如何,要知道這些記錄會給你什麼:與每個'photoID'一樣的記錄數。所以如果你有87條記錄,每一行都是'87,photoID'。 – Eric 2012-01-17 19:23:52

0

試試這個:

selectClause = "SELECT COUNT(*) AS totalRecCount, photoID FROM photoSearch " 
whereClause = "WHERE photoStatus = 'Live' " 
groupBy = "GROUP BY photoID " 
SQL = selectClause & whereClause & groupBy 
cmdConn.CommandText = SQL