31 - Group by (Agrupar registros) |
La función count solo cuenta para todos los registros. Podemos generar valores de resumen para un solo campo, combinando la función count con la cláusula "group by", que agrupa registros para consultas detalladas.
Por ejemplo queremos saber la cantidad de artículos que hay por rubro, luego debemos implementar la siguiente algoritmo (pagina1.asp):
<%option explicit%> <html> <head> <title>problema</title> </head> <body> <% dim conexion set conexion = Server.CreateObject("ADODB.Connection") conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _ "Data Source=.;" & _ "Integrated Security=SSPI;" & _ "Persist Security Info=False;" & _ "Initial Catalog=wi630629_aspya" conexion.Open dim registros set registros = Server.CreateObject("ADODB.RecordSet") registros.open "select count(*) as cantidad,ru.descripcion as descrirubro " & _ " from articulos as ar " & _ "join rubros as ru on ru.codigo=ar.codigorubro " & _ " group by ru.descripcion",conexion do while not registros.eof response.write("Rubro:" & registros("descrirubro")) response.write("<br>") response.write("Cantidad de artículos de dicho rubro:" & registros("cantidad")) response.write("<br>") response.write("------------------------------------------------------------") response.write("<br>") registros.movenext loop conexion.close %> </body> </html>
Como podemos ver la sintaxis SQL para agrupar por rubro es:
registros.open "select count(*) as cantidad,ru.descripcion as descrirubro " & _ " from articulos as ar " & _ "join rubros as ru on ru.codigo=ar.codigorubro " & _ " group by ru.descripcion",conexion
La instrucción anterior solicita que recupere el nombre del rubro y cuente la cantidad de registros que coinciden por el campo "descripcion" de la tabla "rubros". Como resultado aparecen los nombres de los rubros y la cantidad de registros para dicho rubro.