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 22-06-2020
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.354
Poder: 19
Angel.Matilla Va por buen camino
Extraer primeras filas

Buenos días. Tengo que montar un query a partir de estas dos tablas:
Código SQL [-]
CREATE TABLE PROCESO (
  CODPRV VARCHAR(3) CHARACTER SET ISO8859_1 DEFAULT '13' NOT NULL COLLATE ES_ES_CI_AI,
  CODIGO INTEGER DEFAULT 2 NOT NULL,
  NOMBRE VARCHAR(30) CHARACTER SET ISO8859_1 COLLATE ES_ES_CI_AI,
  ELECTOS SMALLINT,
  PRIMARY KEY (CODPRV,CODIGO));

CREATE TABLE ELECCIONES (
  CODPRV VARCHAR(3) CHARACTER SET ISO8859_1 DEFAULT '13' NOT NULL COLLATE ES_ES_CI_AI,
  CODIGO SMALLINT NOT NULL,
  PROCESO INTEGER NOT NULL,
  FECHA SMALLINT NOT NULL,
  CERRADO SMALLINT DEFAULT 1,
  PRIMARY KEY (CODPRV,CODIGO));
El campo CODIGO de la tabla PROCESO es el campo PROCESO en la tabla ELECCIONES y esta tabla tiene, por ejemplo, estos registros:

Bien. Necesito un query que me saque, por ejemplo, los tres primeros de cada uno de los valores del campo proceso de esta tabla; es decir los tres primeros para el valor 3, los tres primeros para el 4, etc.

Hasta ahora lo que hago es recorrer la tabla PROCESO e ir buscando los x valores primeros para cada código en la tabla ELECCIONES. ¿Podría montarse todo en un solo query?
Responder Con Cita
  #2  
Antiguo 22-06-2020
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 20
luisgutierrezb Va por buen camino
Si, con un subquery
Responder Con Cita
  #3  
Antiguo 23-06-2020
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.354
Poder: 19
Angel.Matilla Va por buen camino
Pero ¿cómo? No se me ocurre como montar ese subquery. He probado con esto:
Código SQL [-]
SELECT FIRST 4 Codigo, Proceso
  FROM Elecciones 
 WHERE Proceso IN (SELECT Codigo FROM Proceso WHERE Codigo > 2)
Pero sólo me saca cuatro filas, lógicamente, y no lo que busco que en mi caso serían 16.

Última edición por Angel.Matilla fecha: 23-06-2020 a las 11:19:25.
Responder Con Cita
  #4  
Antiguo 23-06-2020
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.354
Poder: 19
Angel.Matilla Va por buen camino
Y los otros subquery que he probado me dan un error: Multiple rows in singleton select.
Responder Con Cita
  #5  
Antiguo 23-06-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.257
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Me parece que tendrás que hacerlo con un "stored procedure".
Responder Con Cita
  #6  
Antiguo 23-06-2020
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.354
Poder: 19
Angel.Matilla Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Me parece que tendrás que hacerlo con un "stored procedure".
Lo había pensado pero para una única ocasión en todo el proyecto creo que no merece la pena. Gracias.
Responder Con Cita
  #7  
Antiguo 24-06-2020
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.412
Poder: 22
fjcg02 Va camino a la fama
Hola

Si tienes tiempo busca informacion de OVER()

Código SQL [-]
SELECT ROW_NUMBER() OVER(ORDER BY workdept, lastname) AS Nbr, <-- se supone que comienza a renumerar las filas
lastname, salary
FROM employee
ORDER BY workdept, lastname

Te podría renumerar los numeros de fila por grupos. Es decir, le dices por qué campo quieres "resetear", tambien puedes sumar, etc y a partir de ahí ves qué puedes hacer.

No puedo ayudarte mucho más porque no he utilizado esta opción apenas, y fue hace mucho tiempo.

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -

Última edición por Casimiro Notevi fecha: 25-06-2020 a las 11:19:17.
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
Primeras letras en mayúscula pablo Varios 11 13-08-2015 17:46:01
Primeras imágenes de Windows 8 Chris Noticias 7 09-06-2011 00:15:03
¿Como extraer de una cadena de 18 caracter, las primeras 10 letras? Nelly Varios 5 18-06-2007 21:00:09
Primeras imágenes de Internet Explorer 7 marcoszorrilla Noticias 1 02-08-2005 04:54:16
Devolver Solo las Primeras N filas pzhero Oracle 1 21-08-2004 01:15:00


La franja horaria es GMT +2. Ahora son las 01:49:13.


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