SQL query

01/10/2003 - 04:08 por WAB | Informe spam
Recibo este mensaje de error al querer ejecutar una consulta SQl

-
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] You tried to execute a query that
does not include the specified expression 'idusuario' as part of an
aggregate function.
-

La consulta SQL es la siguiente

SQLtxt = "SELECT post.idpost, post.idusuario, post.resumenpost,
post.titulopost, post.textopost, post.tipopost, count(mensaje.idmensaje) as
cuentamensa "
SQLtxt = SQLtxt + "FROM post LEFT OUTER JOIN mensaje ON
post.idpost=mensaje.idpost "
SQLtxt = SQLtxt + "GROUP BY post.idpost"

Los nombres de los campos de las tablas estan bien escritos y el campo
idusuario existe solo en la tabla post. Este mismo error me daba con una
campo fecha que estaba en ambas tablas y al sacar este campo de la consulta
para depurar la instruccion sql empezo a darme error en IdUsuario.
Alguien puede darme una pista de cual puede ser el error que estoy
comentiendo?
Gracias

Preguntas similare

Leer las respuestas

#1 Miguel Gonzalez
01/10/2003 - 11:59 | Informe spam
Hola!

Si la consulta es "así tal cual", deberías agregar al "GROUP BY" todos los
campos que tengas en el "SELECT".

Saludos!
Miguel

"WAB" escribió en el mensaje
news:
Mostrar la cita
that
Mostrar la cita
as
Mostrar la cita
consulta
Mostrar la cita
#2 WAB
02/10/2003 - 03:50 | Informe spam
Muchas gracias!!!!!! me funciono aunque realmente no entiendo porque
debe listar todos los campos en la clausula GROUP BY... en mi caso no hay
problemas pero y si solo necesitara agrupar por alguno de esos
campos???

Gracias de nuevo... supongo que cuando aprenda mas entendere mejor los
porque.????


"Miguel Gonzalez" escribió en el mensaje
news:#
Mostrar la cita
#3 Miguel Gonzalez
02/10/2003 - 12:29 | Informe spam
Pues más o menos, sería porque las funciones de agregado "agregan" los
registros que resulten iguales en el recordset que se obtiene con la
consulta. Es decir, si dos o más registros contienen los mismos datos en los
campos a mostrar (los indicados en el "SELECT") el recordset te mostrará un
único registro. Por definición, si los seleccionas y quieres agruparlos
tendrás que indicarlo así para cada campo seleccionado (a mostrar) en el
"GROUP BY", con excepción de los campos del "SELECT" que ya tengan indicada
una función de agregado, como "COUNT", por ejemplo(Fíjate que el "Campo3" no
está en el "GROUP BY"):

SELECT Tabla1.Campo1, Tabla1.Campo2, COUNT(Tabla1.Campo3) AS CuentaDeCampo1
FROM Tabla1
GROUP BY Tabla1.Campo1, Tabla1.Campo2
ORDER BY Count(Tabla1.Campo1);

Para más cosas sobre SQL, puedes consultar en internet (entre otros, si no
te convencen, google que te pego):

http://personal.lobocom.es/claudio/sql001.htm (muy bueno!!)

http://quidel.inele.ufro.cl/~pvalenzu/tutoriales/sql/sql.html (muy
clarito!!)


Saludos!
Miguel


"WAB" escribió en el mensaje
news:
Mostrar la cita
porque
Mostrar la cita
los
Mostrar la cita
count(mensaje.idmensaje)
Mostrar la cita
una
Mostrar la cita
Ads by Google
Search Busqueda sugerida