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

[SOLUCIONADO] Error con group by en esta consulta

Estas en el tema de Error con group by en esta consulta en el foro de SQL Server en Foros del Web. Hola gente, tengo la siguiente consulta: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original SELECT * FROM WAGERHEADER H , WAGERDETAIL D , GAME G WHERE H ...
  #1 (permalink)  
Antiguo 09/01/2014, 12:05
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 11 años, 7 meses
Puntos: 3
Pregunta Error con group by en esta consulta

Hola gente,

tengo la siguiente consulta:
Código SQL:
Ver original
  1. SELECT *
  2. FROM WAGERHEADER H, WAGERDETAIL D, GAME G
  3. WHERE H.[IdWager] = D.[IdWager] AND
  4.       D.[IdGame] = G.[IdGame]   AND
  5.       H.[SettledDate] >= CONVERT(datetime,('2014-01-08 00:00:00')) AND
  6.       H.[SettledDate] <= CONVERT(datetime,('2014-01-09 00:00:00')) AND
  7.       H.[IdAgent] = 7 GROUP BY H.[IdWager] ORDER BY H.[IdWager] DESC
Pero me da un error:

Column 'WAGERHEADER.IdLineType' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

Saben a que se puede deber ese error ?
  #2 (permalink)  
Antiguo 09/01/2014, 12:09
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Error con group by en esta consulta

a que si le buscas en el foro hay un tema parecido(1........hay varios) ahora cuando usas un group by las columnas tiene que estar en una funcion de agregacion (digase sum(),avg(),max() etc) y si no se encuentran en alguna de estas funciones las tienes que incluir dentro del group by, por eso es el mensaje de error.

Aunando un poco mas en este tema......

http://stackoverflow.com/questions/1...tion-message-m

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 09/01/2014, 13:24
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 11 años, 7 meses
Puntos: 3
Exclamación Respuesta: Error con group by en esta consulta

Amigo la verdad es que casi no antendi lo que me dices ni lo que decia en ese foro, podrias explicarme un poco mejor es que soy algo lento con estas cuestiones de base de datos... gracias
  #4 (permalink)  
Antiguo 09/01/2014, 13:26
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Error con group by en esta consulta

En pocas palabras, cuando usas un GROUP BY, es porque estas haciendo un COUNT o SUM de alguna columna en el SELECT y tu estas haciendo un simple SELECT *

¿Dónde esta tu COUNT o SUM?
__________________
MCTS Isaias Islas
  #5 (permalink)  
Antiguo 09/01/2014, 13:29
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Error con group by en esta consulta

desconozco cuales son las columnas que regresa tu query, pero lo que te digo es que si tienes un

select * from tabla group by campo

te va a marcar error porque las columnas incluidas en un group by deben de estar en una funcion de agregacion (min,max,sum) ejemplo:

select sum(campo) from tabla group by campo

ahora si quieres que aparezcan todas las columnas usando group by debes de incluirlas en el mismo ejem:

select campo1,campo2,campo3 from tabla group by campo1,campo2,campo3

espero que con eso se entienda que "tienes que poner las columnas que regresa tu query dentro del group by a menos que esas columnas esten en una funcion de agregacion"

un poco mas de investigacion acerca del group by no estaria de mas.....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #6 (permalink)  
Antiguo 09/01/2014, 13:30
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Error con group by en esta consulta

¿Y la regla básica? (De acuerdo al master Libras)

Regla básica: Toda columna no afectada por una función agregada (tales como COUNT(), SUM(), AVG(), MAX(), MIN(), etc),
deben estar en el GROUP BY
__________________
MCTS Isaias Islas
  #7 (permalink)  
Antiguo 09/01/2014, 13:32
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 11 años, 7 meses
Puntos: 3
Pregunta Respuesta: Error con group by en esta consulta

Umm ya asi si te entiendo amigo, pero como hago por ejemplo para sacar cuantas veces aparece un juego eso seria con el count(*) pero ademas de eso sacar los datos de ese juego que se repitio por ejemplo 3 veces. Osea para ser mas detallista:

El juego 01 lo jugaron 3 veces y aparte de ese contador me salga los datos de ese juego: nombre, categoria, etc.
  #8 (permalink)  
Antiguo 09/01/2014, 13:38
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Error con group by en esta consulta

con algo como esto:

select count(*), nombre,categoria from tabla group by nombre,categoria

un ejemplo de tus datos ayudaria un poco mas para ayudarte mejor :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 09/01/2014, 14:08
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 11 años, 7 meses
Puntos: 3
Pregunta Respuesta: Error con group by en esta consulta

Amigo hice lo siguiente pero no me funka:
Código SQL:
Ver original
  1. SELECT COUNT(*) AS 'numTickets', G.[VisitorTeam], G.[HomeTeam], G.[Period], G.[VisitorScore], G.[HomeScore]
  2. FROM WAGERHEADER H, WAGERDETAIL D, GAME G
  3. WHERE H.[IdWager] = D.[IdWager] AND
  4.       D.[IdGame]  = G.[IdGame]  AND
  5.       H.[SettledDate] >= CONVERT(datetime,('2014-01-08 00:00:00')) AND
  6.       H.[SettledDate] <= CONVERT(datetime,('2014-01-09 00:00:00')) AND
  7.       H.[IdAgent] = 7 GROUP BY H.[IdWager]

Tengo una tabla llamada GAME donde esta la descripcion de cada juego.
Tengo una tabla llamada WAGERHEADER donde estan los movimientos de los usuarios y es donde me doy cuenta que juego han jugado mas los usuarios, en este esta la relacion con la de GAME y WAGERHEADER tiene un id relacionado con WAGERDETAIL que es donde estan los detalles de otras cuestiones, yo necesito relacionar estas tablas.
  #10 (permalink)  
Antiguo 09/01/2014, 14:12
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Error con group by en esta consulta

de plano no entendiste las explicaciones......

Código SQL:
Ver original
  1. SELECT COUNT(*) AS 'numTickets', G.[VisitorTeam], G.[HomeTeam], G.[Period], G.[VisitorScore], G.[HomeScore]
  2. FROM WAGERHEADER H, WAGERDETAIL D, GAME G
  3. WHERE H.[IdWager] = D.[IdWager] AND
  4.       D.[IdGame]  = G.[IdGame]  AND
  5.       H.[SettledDate] >= CONVERT(datetime,('2014-01-08 00:00:00')) AND
  6.       H.[SettledDate] <= CONVERT(datetime,('2014-01-09 00:00:00')) AND
  7.       H.[IdAgent] = 7 GROUP BY G.[VisitorTeam], G.[HomeTeam], G.[Period], G.[VisitorScore], G.[HomeScore]

prueba con eso, ahora como veo que no dominas para nada sql server.....podrias poner un ejemplo de tus datos y que es lo que quieres obtener para poder "ayudarte"
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #11 (permalink)  
Antiguo 09/01/2014, 14:32
Avatar de Grost  
Fecha de Ingreso: enero-2014
Ubicación: Guatemala
Mensajes: 25
Antigüedad: 10 años, 3 meses
Puntos: 1
Respuesta: Error con group by en esta consulta

Cita:
Iniciado por Libras Ver Mensaje
de plano no entendiste las explicaciones......

Código SQL:
Ver original
  1. SELECT COUNT(*) AS 'numTickets', G.[VisitorTeam], G.[HomeTeam], G.[Period], G.[VisitorScore], G.[HomeScore]
  2. FROM WAGERHEADER H, WAGERDETAIL D, GAME G
  3. WHERE H.[IdWager] = D.[IdWager] AND
  4.       D.[IdGame]  = G.[IdGame]  AND
  5.       H.[SettledDate] >= CONVERT(datetime,('2014-01-08 00:00:00')) AND
  6.       H.[SettledDate] <= CONVERT(datetime,('2014-01-09 00:00:00')) AND
  7.       H.[IdAgent] = 7 GROUP BY G.[VisitorTeam], G.[HomeTeam], G.[Period], G.[VisitorScore], G.[HomeScore]

prueba con eso, ahora como veo que no dominas para nada sql server.....podrias poner un ejemplo de tus datos y que es lo que quieres obtener para poder "ayudarte"
exacto
  #12 (permalink)  
Antiguo 09/01/2014, 15:16
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 11 años, 7 meses
Puntos: 3
Pregunta Respuesta: Error con group by en esta consulta

Amigo gracias por tu respuesta me funciono de pelos, podrias explicarme xq hay q poner en el group by los datos q tambien seleccione ?
  #13 (permalink)  
Antiguo 09/01/2014, 15:29
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Error con group by en esta consulta

Cita:
Iniciado por adryan310 Ver Mensaje
Amigo gracias por tu respuesta me funciono de pelos, podrias explicarme xq hay q poner en el group by los datos q tambien seleccione ?
Por lo que se te ha explicado a lo largo de todo este post...las columnas de un select que tiene un group by deben de ser incluidas en el mismo a menos que las uses en una funcion de agregacion por lo que si tienes

select campo1,campo2,campo3, campo4 from tabla group by campo1

deberas de poner campo2,campo3 y campo4 dentro del group by porque no hay funcion de agregado pero si por ejemplo sumaras las cantidades de campo4 quedaria de la siguiente manera:

select campo1,campo2,campo3, sum(campo4) from tabla group by campo1,campo2,campo3

porque? porque campo 4 esta siendo usada en una funcion de agregacion y no se necesita especificar que se esta agrupando....

espero haberme explicado....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #14 (permalink)  
Antiguo 09/01/2014, 15:50
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 11 años, 7 meses
Puntos: 3
De acuerdo Respuesta: Error con group by en esta consulta

Muchas gracias la verdad no sabia eso, aprendi algo nuevo y te agradezco tu paciencia conmigo
  #15 (permalink)  
Antiguo 09/01/2014, 15:54
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Error con group by en esta consulta

de nada, un placer, aunque costo sus 13 post's aprendiste algo :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: group, select
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 05:22.