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: 21
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
  #8  
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
Bueno, es que ahora estamos entrando en otra cosa.

Si lo que quieres es ir agrupando en el Quickreport, lo mejor será que tu consulta SQL no este agrupada. Y dejarías que Quickreporte se encargue de hacer las agrupaciones necesarias.

Y como te había mencionado, en SQL para obtener lo que necesitas, en lugar de utilizar "Group By", sería más fácil utilizar la cláusula "DISTINCT"
__________________

Responder Con Cita
  #9  
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
Bueno, es que ahora estamos entrando en otra cosa.

Si lo que quieres es ir agrupando en el Quickreport, lo mejor será que tu consulta SQL no este agrupada. Y dejarías que Quickreporte se encargue de hacer las agrupaciones necesarias.

Y como te había mencionado, en SQL para obtener lo que necesitas, en lugar de utilizar "Group By", sería más fácil utilizar la cláusula "DISTINCT"
Hola ContraVeneno
Es que el DISTINCT no me vadria, ya que si (por ejemplo) tengo cuatro propiedades de tipo vivienda en Madrid (provincia) Madrid (ciudad) y dos están en la calle Pérez Pastor (una en el cuarto y otra en el octavo) solo sacaría una, mientras que lo que necesito es me saque las cuatro del tipo vivienda, eso sí, ordenadas por la provincia y la localidad
Responder Con Cita
  #10  
Antiguo 17-01-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Si no te vale el distinct, tampoco te vale el group by... no es necesario.

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
  #11  
Antiguo 17-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 jachguate Ver Mensaje
Si no te vale el distinct, tampoco te vale el group by... no es necesario.

Hasta luego.

Hola jachguate.

Si, el problema es mio, de conceptos .

No sé porqué, me estaba "emperrando" en agrupar la consulta, cuando lo único que tengo que hacer es ordenarla y dejar a QReport que se encargue del agrupamiento, como bién dice ContraVeneno estoy mezclando churras con merinas

Agradecido a todos los contribuyentes en ampliar conocimientos
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 15:11: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