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 16-01-2008
Avatar de salvica
salvica salvica is offline
Miembro
 
Registrado: mar 2004
Ubicación: Albacete (España) ... En un lugar de la Mancha ...
Posts: 304
Poder: 21
salvica Va por buen camino
Agrupar ordenados u Ordenar agrupados

¿podéis decirme como se agrupa una consulta ordenada?

Hago lo siguiente:

Código SQL [-]

{
       TODAS las propiedades agrupadas por TIPO y ordenadas por PROVINCIA, LOCALIDAD, DIRECCION, NUMERo y LETRA
}
SELECT propieda.ID_CLAVE, propieda.TIPO, 
       propieda.DIRECCION, propieda.NUMERO, propieda.PLANTA, propieda.LETRA, 
       propieda.LOCALIDAD, propieda.PROVINCIA, propieda.C_POSTAL,
       propieta.NOMBRE, propieta.APELLIDO_1, propieta.APELLIDO_2
  FROM propieta INNER JOIN (propieda INNER JOIN pertenec ON propieda.ID_CLAVE = pertenec.ID_PROPIED) ON propieta.ID_CLAVE = pertenec.ID_PROPIET
 GROUP BY propieda.TIPO
 ORDER BY propieda.PROVINCIA, propieda.LOCALIDAD, propieda.DIRECCION, propieda.NUMERO, propieda.PLANTA, propieda.LETRA

Siempre me dice que un campo (generalmente el primero del select, pero si lo quito entonces el siguiente) no forma parte del agrupamiento.

Gracias
Salvica

Última edición por salvica fecha: 16-01-2008 a las 13:12:10.
Responder Con Cita
  #2  
Antiguo 16-01-2008
Nelet Nelet is offline
Miembro
 
Registrado: may 2003
Ubicación: Picassent - Valencia
Posts: 95
Poder: 22
Nelet Va por buen camino
¿Por que agrupas si no tienes ningun agregado en la consulta?. Si no tienes agregados no tiene sentido la claúsula GROUP BY.
__________________
_____________________________________
And follow me to where the real fun is
Responder Con Cita
  #3  
Antiguo 16-01-2008
Avatar de salvica
salvica salvica is offline
Miembro
 
Registrado: mar 2004
Ubicación: Albacete (España) ... En un lugar de la Mancha ...
Posts: 304
Poder: 21
salvica Va por buen camino
Cita:
Empezado por Nelet Ver Mensaje
¿Por que agrupas si no tienes ningun agregado en la consulta?. Si no tienes agregados no tiene sentido la claúsula GROUP BY.
¿perdón? los del agregados me cae nuevo
gracias, salvica
Responder Con Cita
  #4  
Antiguo 16-01-2008
Blackspike Blackspike is offline
Miembro
 
Registrado: dic 2006
Ubicación: Mallorca, Baleares
Posts: 29
Poder: 0
Blackspike Va por buen camino
Para poder hacer una consulta agrupada y ordenada creo recordar que tienes que poner en el group by todos los campos que estas declarando en la select (exceptuando los que sean count,sum...). Despues podras realizar el order by.

Tambien hay que tener en cuenta que si pones algun campo en el order by que no esta declarado en la select, tambien tienes que agregarlo en el group by.

Prueba de esta manera a ver que tal.


Código SQL [-]
{
       TODAS las propiedades agrupadas por TIPO y ordenadas por PROVINCIA, LOCALIDAD, DIRECCION, NUMERo y LETRA
}
SELECT propieda.ID_CLAVE, propieda.TIPO, 
       propieda.DIRECCION, propieda.NUMERO, propieda.PLANTA, propieda.LETRA, 
       propieda.LOCALIDAD, propieda.PROVINCIA, propieda.C_POSTAL,
       propieta.NOMBRE, propieta.APELLIDO_1, propieta.APELLIDO_2
  FROM propieta INNER JOIN (propieda INNER JOIN pertenec ON propieda.ID_CLAVE = pertenec.ID_PROPIED) ON propieta.ID_CLAVE = pertenec.ID_PROPIET
 GROUP BY propieda.ID_CLAVE, propieda.TIPO, 
       propieda.DIRECCION, propieda.NUMERO, propieda.PLANTA, propieda.LETRA, 
       propieda.LOCALIDAD, propieda.PROVINCIA, propieda.C_POSTAL,
       propieta.NOMBRE, propieta.APELLIDO_1, propieta.APELLIDO_2
 ORDER BY propieda.PROVINCIA, propieda.LOCALIDAD, propieda.DIRECCION, propieda.NUMERO, propieda.PLANTA, propieda.LETRA
Responder Con Cita
  #5  
Antiguo 16-01-2008
Avatar de salvica
salvica salvica is offline
Miembro
 
Registrado: mar 2004
Ubicación: Albacete (España) ... En un lugar de la Mancha ...
Posts: 304
Poder: 21
salvica Va por buen camino
Gracias por la explicación Blackspike, tenía entendido que lo obligatorio era que los campos del GROUP BY formasen parte del SELECT, no que tuviesen que estar todos .

Por lo menos funciona y no me da error . Ahora tengo que ver lo que le pasa al informe.

De nuevo gracias
salvica
Responder Con Cita
  #6  
Antiguo 16-01-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
mas bien habría que concentrarse en la pregunta que te hizo Nelet.

No tiene sentido utiliza un "group by" si no vas a utilizar funciones de agregados, es decir: SUM, AVG, COUNT, MAX, MIN, etc, etc

Si por ejemplo, tienes varios registros de una misma localidad y lo que quieres es que muestre solo uno, en lugar de agruparlos, podrías utilizar la cláusula "DISTINCT".

En fin, como ya dijo Nelet, no tiene sentido agrupar, si no vas a agregar.
__________________

Responder Con Cita
  #7  
Antiguo 16-01-2008
Avatar de salvica
salvica salvica is offline
Miembro
 
Registrado: mar 2004
Ubicación: Albacete (España) ... En un lugar de la Mancha ...
Posts: 304
Poder: 21
salvica Va por buen camino
Cita:
Empezado por ContraVeneno Ver Mensaje
mas bien habría que concentrarse en la pregunta que te hizo Nelet.

No tiene sentido utiliza un "group by" si no vas a utilizar funciones de agregados, es decir: SUM, AVG, COUNT, MAX, MIN, etc, etc

Si por ejemplo, tienes varios registros de una misma localidad y lo que quieres es que muestre solo uno, en lugar de agruparlos, podrías utilizar la cláusula "DISTINCT".

En fin, como ya dijo Nelet, no tiene sentido agrupar, si no vas a agregar.
Hola ContraVeneno, bienvenido al debate.

Depués de lo que estoy "escuchando" creo que voy a tener que reciclarme .

No estoy intentando agregar nada, solo sacar un listado de propiedades agrupadas por TIPO, dentro de cada tipo agrupadas PROVINCIA y dentro de estas por LOCALIDAD.

Según el manual del QReport debo incluir una banda de grupo (TQrGroupBand creo que se llama) y en la propiedad Expression poner los campos de agrupamiento.

Con respecto al SQL, que es lo que se trata aquí, tenía entendido que los campos del GROUP BY tenían que estar definidos en la SELECT, no que todos los campos de la SELECT tienen que estar en el ORDER BY, de ahí mi ignorancia en el error que me daba el programa

Saludos
salvica
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Traer datos de una tabla y ordenarlos en un dbgrid ordenados Petolansa Varios 3 07-12-2007 15:40:03
pasar datos ordenados Cosgaya Tablas planas 3 30-12-2005 06:14:21
Copiar registros ordenados a otras tablas... Phacko Conexión con bases de datos 6 06-01-2005 01:08:27
Consulta con datos agrupados victorxata Firebird e Interbase 1 28-01-2004 12:19:41
Suma de agrupados... Tanix Impresión 2 19-01-2004 12:45:45


La franja horaria es GMT +2. Ahora son las 22:54:51.


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