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

Error cuando intento agrupar

Estas en el tema de Error cuando intento agrupar en el foro de SQL Server en Foros del Web. Hola Foro! ya hace un par de días que estoy con esta consulta y no pude resolverla aún, espero me puedan dar una mano. Código: ...
  #1 (permalink)  
Antiguo 29/10/2008, 21:06
 
Fecha de Ingreso: abril-2005
Mensajes: 182
Antigüedad: 19 años
Puntos: 1
Error cuando intento agrupar

Hola Foro! ya hace un par de días que estoy con esta consulta y no pude resolverla aún, espero me puedan dar una mano.

Código:
select distinct locales.nombre, grupo, categorias.nombre as cat, locales.id_locales from locales join (categlocales join categorias on categorias.id_categorias = categlocales.id_categorias) on locales.id_locales = categlocales.id_locales where grupo = 'Casa' group by locales.nombre
Si a esa consulta le saco el group by locales.nombre recibo el siguiente resultado:

nombre| grupo | cat | id_locales
--------------------------------------
BURANI | Casa | Bazar |43
QUALCOSA | Casa | Bazar |19
GARBARINO | Casa | Electrónica |17
GARBARINO | Casa | Informática|11
GARBARINO | Casa | Electrodomesticos|10

Pero como se puede ver en los resultados uno de los locales se repite 3 veces por tener 3 categorias diferentes, por eso quise agrupar por el nombre del local, sin embargo me tira este error que no entiendo por qué.

Código:
Server: Msg 8120, Level 16, State 1, Line 1Column 'categorias.grupo' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Server: Msg 8120, Level 16, State 1, Line 1Column 'categorias.nombre' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Server: Msg 8120, Level 16, State 1, Line 1Column 'locales.id_locales' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Gracias por su tiempo.
  #2 (permalink)  
Antiguo 30/10/2008, 07:58
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Respuesta: Error cuando intento agrupar

y cual de las tres categorias deberia mostrar?

Como se repiten, tienes que indicar la operacion a realizar con los campos que no estan agrupados, es lo que te dice el error...

Algo como desplegar la primera o la ultima categoria, etc...

saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #3 (permalink)  
Antiguo 30/10/2008, 08:11
 
Fecha de Ingreso: abril-2005
Mensajes: 182
Antigüedad: 19 años
Puntos: 1
Respuesta: Error cuando intento agrupar

Hola Andres, antes que nada muchas gracias por la respuesta, entiendo lo que me explicas pero no se como aplicarlo a la consulta, tendria que hacer una subconsulta para sacar la primera o última categoria? perdon por mi ignorancia pero no tengo mucha experiencia en SQL Server.
  #4 (permalink)  
Antiguo 30/10/2008, 09:08
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Respuesta: Error cuando intento agrupar

comentanos cual es el resultado que esperas, asi seguro alguien te ayudara a obtenerlo...

Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #5 (permalink)  
Antiguo 30/10/2008, 10:21
 
Fecha de Ingreso: abril-2005
Mensajes: 182
Antigüedad: 19 años
Puntos: 1
Respuesta: Error cuando intento agrupar

Estuve dandole vueltas a la consulta y vi que en realidad el campo categorias.nombre no es necesario, asi que lo saque y también elimine el group by locales.nombre, y ya no me trae registros duplicados, gracias por tus respuestas Andres :)

Última edición por chan; 30/10/2008 a las 10:28
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 06:45.