Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Problemas para agrupar campo

Estas en el tema de Problemas para agrupar campo en el foro de Bases de Datos General en Foros del Web. Hola tengo el siguiente problema haber si me pueden dar una manito con esto tengo dos tablas de la siguiente forma +--------------------+ | rendicion_ctas | ...
  #1 (permalink)  
Antiguo 11/03/2005, 06:57
 
Fecha de Ingreso: septiembre-2003
Mensajes: 26
Antigüedad: 21 años, 3 meses
Puntos: 0
Problemas para agrupar campo

Hola tengo el siguiente problema haber si me pueden dar una manito con esto

tengo dos tablas de la siguiente forma

+--------------------+
| rendicion_ctas |
+--------------------+
| folio |
| rendicion |
+--------------------+

+---------------------+
|solicitudes |
+---------------------+
|folio |
|tipo_ayuda |
|cantidad |
|otros |
+---------------------+

la consulta debe mostrar los datos de solicitudes (son mas datos yo solo puse unos de ejemplos) donde coincidan los numeros de folios con la tabla rendicion
pero mostrando solo aquellos cuyo estado de rendicion este activo, ademas solo debe desplegar algunos de los campos (para esto uso la sentencia TOP)

Por que necesito agrupar, porque se repiten 5 o mas veces el mismo numero de folio, entonces la idea es mostrar solo uno de los resultados no 5 o mas de lo mismo

la BD que estoy usando es access por imposicion no por que me agrade, asi que no es factible cambiarme.

el query seria algo asi como

SELECT TOP 10, [Solicitudes].[Folio], [Solicitudes].[Tipo_ayuda], [Solicitudes].[cantidad], [Solicitudes].[otros], [rendicion_ctas].[folio]
FROM Solicitudes, rendicion_ctas
WHERE [Solicitudes].[Folio]=[rendicion_ctas].[folio] AND [rendicion_ctas].[rendida]='Si'
GROUP BY [solicitudes].[folio];

en teoria y solo en teoria deberia estar bien el query pero no lo ejecuta, ya sea tanto en una consulta directa sobre access, o en la pagina asp que se conecta a la bd

el error que me entrega en access es :"Ha intentando hacer una consulta que no incluye la expresion especificada "Tipo_ayuda" como parte de una funcion de agregado"

sobre el mismo query he tratado de realizar la consulta usando DISTINCTROW (solicitudes.folio), pero sin resultados, tambien probe con un INNER JOIN pero me dio exactamente el mismo problema que con el query actual

bueno eso espero su comentarios (ojala haya sido claro en explicar mi problema :P)

salu2 y gracias de antemano

Última edición por Hitokiri; 11/03/2005 a las 06:59
  #2 (permalink)  
Antiguo 11/03/2005, 09:13
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 10 meses
Puntos: 50
Hola Hitokiri, por lo que estoy viendo creo que tienes despues del top 10 una "," de más...

Podría quedarte así:

Cita:
SELECT TOP 10 [Solicitudes].[Folio], [Solicitudes].[Tipo_ayuda], [Solicitudes].[cantidad], [Solicitudes].[otros], [rendicion_ctas].[folio]
FROM Solicitudes, rendicion_ctas
WHERE [Solicitudes].[Folio]=[rendicion_ctas].[folio] AND [rendicion_ctas].[rendida]='Si'
GROUP BY [solicitudes].[folio];
Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #3 (permalink)  
Antiguo 11/03/2005, 09:31
 
Fecha de Ingreso: septiembre-2003
Mensajes: 26
Antigüedad: 21 años, 3 meses
Puntos: 0
hola gracias por la respuesta pero en realidad ese fue un error de tipeo al traspasar los datos hacia aca la consulta original no tiene eso y el error persiste

gracias de todos modos, si tienes alguna otra sugenrencia de cual puede ser el problema estaria agradecido

salu2
  #4 (permalink)  
Antiguo 11/03/2005, 11:25
Avatar de cableh  
Fecha de Ingreso: diciembre-2004
Mensajes: 54
Antigüedad: 20 años
Puntos: 0
Hola Hitokiri, creo que el problema viene al no agrupar el resto de campos que quieres seleccionar. Cuando en una consulta agrupas por un campo, el resto de campos que quieres mostrar los tienes que agrupar o deben formar parte de una función del tipo count(),max(), avg() ...
Por otro lado la sentencia TOP 10 te muestra los primeros 10 registros (y no campos) que encuentre y por último podemos quitar el campo [rendicion_ctas].[folio] porque es igual a [Solicitudes].[Folio]. Por tanto prueba a dejar la consulta así:

SELECT TOP 10 [Solicitudes].[Folio], [Solicitudes].[Tipo_ayuda], [Solicitudes].[cantidad], [Solicitudes].[otros]
FROM Solicitudes, rendicion_ctas
WHERE [Solicitudes].[Folio]=[rendicion_ctas].[folio] AND [rendicion_ctas].[rendida]='Si'
GROUP BY [solicitudes].[folio],[Solicitudes].[Tipo_ayuda], [Solicitudes].[cantidad], [Solicitudes].[otros];

Esta consulta te devolverá los 10 primeros registros distintos que cumplan la condición.

Ten en cuenta que p.e. si tenemos dos registros cuyo [Solicitudes].[Folio] es igual pero [Solicitudes].[Tipo_ayuda] (o cualquier otro campo) es distinto la select te devolverá dos registros.

Otra cosa si el campo [rendicion_ctas].[rendida] es del tipo Sí/No en la where lo correcto sería [rendicion_ctas].[rendida]=-1.

Salu2.

Última edición por cableh; 11/03/2005 a las 11:30
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:48.