Claramente, cuando se utiliza la cláusula GROUP BY, las columnas que no son función agregada deben ser parte de la cláusula group by. El problema aquí es que no puedo contener HTTPADDRESS & columnas DATEENTERED en la cláusula GROUP BY. Además, no conozco una función que me dé las últimas entradas de todos.La columna no es válida en la lista de selección porque no está contenida ni en una función de agregado ni en la cláusula GROUP BY
editar: Yo uso sql-server. Usaría la función LAST si estuviera usando el acceso.
SQL = "SELECT VISITORIP, HTTPADDRESS, DATEENTERED"
SQL = SQL & " FROM STATS"
SQL = SQL & " WHERE DATEENTERED BETWEEN '" & OnlineTime & "' AND '" & NOW() & "'"
SQL = SQL & " GROUP BY VISITORIP"
SQL = SQL & " ORDER BY DATEENTERED DESC"
Set objOnVisitors = objConn.Execute(SQL)
¿Qué sucede si utilizo MAX en HTTPADDRESS y DATEENTERED directamente? –
Potencialmente más incorrecto que si el IP tiene dos visitas en el mismo datetime exacto que es el último. MAX (HTTPADDRESS) y MAX (DATEENTERED) son potencialmente máximos independientes sobre el grupo. Por ejemplo, si el usuario visita http://www.abc.com/page2.htm y luego http://www.abc.com/page1.htm, la dirección máxima será la primera página, pero el tiempo máximo ser la segunda visita. –
+1 no porque esto resolvió directamente mi problema, pero la idea de unirse me provocó otra idea para resolver mi problema. –