Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

El primero que encuentra

Estas en el tema de El primero que encuentra en el foro de Oracle en Foros del Web. Cargo información en una tabla nueva desde otra tabla vieja que tiene muchos datos. En la tabla nueva solo requiero el primer registro que encuentra ...
  #1 (permalink)  
Antiguo 29/07/2010, 01:47
 
Fecha de Ingreso: enero-2009
Mensajes: 81
Antigüedad: 15 años, 11 meses
Puntos: 0
El primero que encuentra

Cargo información en una tabla nueva desde otra tabla vieja que tiene muchos datos.

En la tabla nueva solo requiero el primer registro que encuentra para un cierto campo.

Por ejemplo, por pais. Solo quiero unicamente el primer registro que encuentra para cada pais. Si encuentra Alemania, solo quiero el primero, pueden haber 1000. Los demas no me interesan.

En Access es la instruccion first(campo), pero como es en Oracle?
  #2 (permalink)  
Antiguo 29/07/2010, 06:52
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: El primero que encuentra

Hola bazzi

Cual es la estructura de la tabla?
Cuando hablas de "cierto" campo se hace dificil ubicarse en tu contexto y tratar de dar una solución.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 29/07/2010, 08:13
 
Fecha de Ingreso: enero-2009
Mensajes: 81
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: El primero que encuentra

Mil gracias por tu respuesta:

create table a1_metadata
test varchar(30),
source_name varchar(50),
path varchar(100),
document varchar(80),
person_name varchar(50),
............;


" LE AGREGO LA INFORMACION A ESTA TABLA"


create table a1_source
source_id integer primary key,
source_name varchar(50);

Mi metadata tiene como 60,000 resgistros, pero solo son 3 sources. Y asi posteriormente hago mas filtros para otros catalogos (documentos, personas, etc)
  #4 (permalink)  
Antiguo 29/07/2010, 09:04
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: El primero que encuentra

Y si haces esto:
Código SQL:
Ver original
  1. DROP TABLE a1_source;
  2. CREATE TABLE a1_source (source_id,source_name)
  3. AS
  4. SELECT test_seq.NEXTVAL,source_name FROM a1_metadata;
  5. ALTER TABLE a1_source ADD CONSTRAINT pk_a1_source PRIMARY KEY(source_id);
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 02/08/2010, 07:35
 
Fecha de Ingreso: enero-2009
Mensajes: 81
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: El primero que encuentra

Interesante tu propuesta. Ya la intente, y si funciona. Pero yo requiero el select "distinct", ya que el catalogo solo debe de tener el unico. Lo que me hace la rutina es que me mete por cada registro de metadata un registro en source con su numero correpondiente.

El resultado solo son tres sources. Pero metadata tiene 63,000 registros.
  #6 (permalink)  
Antiguo 02/08/2010, 07:44
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: El primero que encuentra

Código SQL:
Ver original
  1. DROP TABLE a1_source;
  2. CREATE TABLE a1_source (source_id,source_name)
  3. AS
  4. SELECT test_seq.NEXTVAL, source_name FROM
  5. (SELECT DISTINCT source_name source_name FROM a1_metadata);
  6. ALTER TABLE a1_source ADD CONSTRAINT pk_a1_source PRIMARY KEY(source_id);

Así?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: encuentra, primero
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:26.