2012-01-17 73 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