Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-04-2004
verm83 verm83 is offline
Miembro
 
Registrado: nov 2003
Posts: 28
Poder: 0
verm83 Va por buen camino
Problemas con GROUP BY en firebird

Hola buenas.
Resulta que estoy haciendo una aplicación para gestionar un videoclub, y me interesaría que me hiciera un ranking con los juegos más alquilados. Para ello uso la siguiente consulta, la cual me da un fallo sobre la cláusula GROUP BY:

Código:
SELECT
    JUEGOS.NOMBRE,JUEGOS.PLATAFORMA,SUM(JUEGOS.NOMBRE) AS SUMA
FROM
    ALQUILER INNER JOIN JUEGOS ON (ALQUILER.ID_JUEGO = JUEGOS.ID_JUEGO)
GROUP BY
    JUEGOS.NOMBRE ORDER BY JUEGOS.NOMBRE DESC
El fallo devuelto es el siguiente: "invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause)"

No he conseguido solucionarlo, máxime cuando mi gestor de base de datos me dice que es correcta, y la he usado muchas otras veces con Oracle o MySQL. Igualmente, he intentado hacer un LIMIT 3, pero también me devuelve error, teniendo que controlar los resultados por código desde Delphi. Uso Delphi 7 + Firebird + FIBPlus. ¿Alguna sugerencia?

Gracias anticipadas.
__________________
IncestoCanibal.com
Responder Con Cita
  #2  
Antiguo 09-04-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
si tu dices que la misma consulta te ha funcionado en otros SGBD... te creo, pero toda cláusula GROUP BY ha de contener los mismos campos que la SELECT a excepción de los agregados

Código:
SELECT
    JUEGOS.NOMBRE,JUEGOS.PLATAFORMA,SUM(JUEGOS.NOMBRE) AS SUMA
FROM
    ALQUILER INNER JOIN JUEGOS ON (ALQUILER.ID_JUEGO = JUEGOS.ID_JUEGO)
GROUP BY
    JUEGOS.NOMBRE, JUEGOS.PLATAFORMA
ORDER BY JUEGOS.NOMBRE DESC
Responder Con Cita
  #3  
Antiguo 13-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Cool

Cita:
Empezado por verm83
máxime cuando mi gestor de base de datos me dice que es correcta, y la he usado muchas otras veces con Oracle o MySQL.
Con mySQL no se..... pero con Oracle, no te lo creo
que versión de Oracle usas???



Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #4  
Antiguo 13-04-2004
verm83 verm83 is offline
Miembro
 
Registrado: nov 2003
Posts: 28
Poder: 0
verm83 Va por buen camino
Pues esa consulta concreta no lo sé, me refería al GROUP BY. No sabía que tenía que llevar los mismos campos que usas en el SELECT. Igualmente, yo he usado muchas veces un SELECT con muchos campos, y en el GROUP BY sólo el que me interesa, bajo MySQL, y funciona perfectamente. Juraría, a que con Oracle también. He usado la 8i Developer, aunque no en profundidad.
__________________
IncestoCanibal.com
Responder Con Cita
  #5  
Antiguo 13-04-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

Cita:
Empezado por verm83
he usado muchas veces un SELECT con muchos campos, y en el GROUP BY sólo el que me interesa, bajo MySQL, y funciona perfectamente.
Entonces te queda una consulta sin el menor sentido. Si MySQL la acepta, es un bug de MySQL.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #6  
Antiguo 13-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Cool

Cita:
Empezado por verm83
Juraría, a que con Oracle también. He usado la 8i Developer
No jures en vano... te vas a ir al infierno!

Pues no, yo se asegurarte que en Oracle también tenes que listar todos los campos en el group by. A diferencia de interbase, podes usar funciones, cálculos, etc. e incluirlos en el group by... salvo las funciones agregadas o estadísticas, por supuesto.

Por cierto, yo no conozco la 8i developer (que estoy seguro que no varia en su comportamiento... ) pero esto que afirmo si lo tengo bien probado en la 7.3.x (personal y enterprise), en la 8i (personal y enterprise) y en la 9i enterprise....

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #7  
Antiguo 13-04-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

Cita:
Empezado por jachguate
A diferencia de interbase, podes usar funciones, cálculos, etc. e incluirlos en el group by... salvo las funciones agregadas o estadísticas, por supuesto.
Ahora en Firebird 1.5 también puedes agrupar por expresiones (funciones, cálculos, ...).

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #8  
Antiguo 15-04-2004
verm83 verm83 is offline
Miembro
 
Registrado: nov 2003
Posts: 28
Poder: 0
verm83 Va por buen camino
Jo, pues si que me estoy enterando de cosas !!
Y yo que pensaba que sabía un poquito de SQL...
__________________
IncestoCanibal.com
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 07:15:07.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi