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:
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



Respuesta Responder a este mensaje
#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:#
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:
> 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
>
>
>


Respuesta Responder a este mensaje
#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:
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:#
> 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:
> > 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
> >
> >
> >
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida