2012-01-17 5 views
1

Я пытаюсь добавить количество всех возвращенных записей в свой запрос, но имею некоторые проблемы. Это очень большой запрос, поэтому я не буду публиковать его полностью.MySQL/классический ASP - количество записей

Когда это выполняется, я получаю все записи, но count 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

+0

Что вы делаете 'limitClause' на' GROUP BY'? –

+0

Я не знаю @ p.campbell, вот почему я получаю помощь – TheCarver

ответ

2

Она возвращает 1, потому что вы группирование по самой вещи, которую вы хотите пересчитать. Удалите пункт group by и столбец photoId, и вы получите свой счет.

group by сообщает MySQL: «Для каждого отдельного PhotoID подсчитайте количество ненулевых PhotoID с." По определению, это 1.

+0

Мне нужно выбрать столбец photoID – TheCarver

+0

@MartinG - Затем выберите его. MySQL позволяет вам выбирать столбцы, в которых не содержится предложение 'group by', хотя используются агрегированные функции. Это единственная СУБД, с которой я все время проводил это. Во всяком случае, поймите, что даст вам этот набор записей: тот же счетчик записей вместе с каждым 'photoID'. Поэтому, если у вас есть 87 записей, каждая строка будет '87, photoID'. – Eric

0

Попробуйте это:

selectClause = "SELECT COUNT(*) AS totalRecCount, photoID FROM photoSearch " 
whereClause = "WHERE photoStatus = 'Live' " 
groupBy = "GROUP BY photoID " 
SQL = selectClause & whereClause & groupBy 
cmdConn.CommandText = SQL 
Смежные вопросы