Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Problemas con GROUP BY en firebird (https://www.clubdelphi.com/foros/showthread.php?t=9010)

verm83 09-04-2004 18:01:15

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.

__cadetill 09-04-2004 19:27:32

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


jachguate 13-04-2004 08:18:35

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 :confused:
que versión de Oracle usas???

:rolleyes:

Hasta luego.

;)

verm83 13-04-2004 12:20:30

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.

guillotmarc 13-04-2004 14:15:11

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.

jachguate 13-04-2004 21:50:51

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

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.

;)

guillotmarc 13-04-2004 22:01:20

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.

verm83 15-04-2004 11:31:26

Jo, pues si que me estoy enterando de cosas !!
Y yo que pensaba que sabía un poquito de SQL... :eek:


La franja horaria es GMT +2. Ahora son las 09:44:16.

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