Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-04-2023
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Encontrar valor para el mínimo

Buenas tardes. Aquí estoy otra vez dando la lata.

Tengo esta tabla en FB:
Código SQL [-]
CREATE TABLE MESAS (
  CODIGO INTEGER NOT NULL,
  MUNICIPIO INTEGER DEFAULT 1 NOT NULL,
  DISTRITO SMALLINT NOT NULL,
  SECCION SMALLINT NOT NULL,
  MESA VARCHAR(2) CHARACTER SET ISO8859_1 DEFAULT 'U' NOT NULL COLLATE ES_ES_CI_AI);
que tiene, por ejemplo, estos datos:

Necesito un query que me dé el valor del campo código para el mínimo de la combinación Distrito, Sección y Mesa para cada municipio.

He hecho varias pruebas. Con este query:
Código SQL [-]
SELECT Municipio, MIN(Distrito||Seccion||Mesa)
FROM Mesas
Group BY Municipio
Obtengo esto:

Es correcto porque para cada municipio me dice el valor mínimo de la combinación. Sin embargo si en vez de municipio uso el campo código, que es el valor que necesito, así:
Código SQL [-]
SELECT Codigo, MIN(Distrito||Seccion||Mesa)
FROM Mesas
GROUP BY Codigo
lo que obtengo es esto:

Evidentemente este no es el resultado que me interesa porque me saca en la mayoría de los casos más de un resultado por municipio. He probado también con la cláusula HAVING:
Código SQL [-]
SELECT Codigo
FROM Mesas
GROUP BY Codigo
HAVING Distrito||Seccion||Mesa = MIN(Distrito||Seccion||Mesa)
pero las distintas combinaciones que he probado con ella me dan siempre el mismo error:
Cita:
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Invalid expression in the HAVING clause (neither an aggregate function nor a part of the GROUP BY clause).
y al traducirlo (mi inglés es muy limitado) me dice esto:
Cita:
Expresión no válida en la cláusula HAVING (ni una función agregada ni una parte de la cláusula GROUP BY).
cosa, por otra parte, que no entiendo. ¿Alguna sugerencia?
Responder Con Cita
  #2  
Antiguo 14-04-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No sé si es esto lo que quieres:
Código SQL [-]
select municipio, codigo, min(distrito||seccion||mesa)
from mesas
group by municipio, codigo
Responder Con Cita
  #3  
Antiguo 15-04-2023
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
No sé si es esto lo que quieres:
Código SQL [-]
select municipio, codigo, min(distrito||seccion||mesa)
from mesas
group by municipio, codigo
Gracias. Ya lo había probado, se me olvidó ponerlo, y tampoco funciona.
Responder Con Cita
  #4  
Antiguo 15-04-2023
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Encontré la solución. No sé si será la mejor, pero funciona.
Código SQL [-]
SELECT A.Codigo, A.Municipio, A.Distrito||A.Seccion||A.Mesa
  FROM Mesas A
 WHERE A.Distrito||A.Seccion||A.Mesa = (SELECT MIN(Distrito||Seccion||Mesa) FROM Mesas WHERE Municipio = A.Municipio)
y me da una sola mesa por municipio.
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
Encontrar valor maximo de un texto mixto wilcg SQL 8 20-08-2014 17:40:09
Máximo o mínimo valor en un listbox CarlosAlberto Varios 32 05-12-2011 18:15:13
Consulta para encontrar el valor más cercano Faust SQL 1 01-08-2007 05:15:58
width con valor mínimo edusus Varios 1 02-04-2006 11:58:11
Definir OnResize minimo para un Form miguel_fr OOP 3 17-06-2004 15:36:33


La franja horaria es GMT +2. Ahora son las 12:42:18.


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