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

Encontrar la duplicada (ORACLE)

Estas en el tema de Encontrar la duplicada (ORACLE) en el foro de Bases de Datos General en Foros del Web. Tengo que encontrar un registro duplicado con una consulta sql en un oracle 8.1.7. Para que exista un duplicado, al menos deben haber 2 registrs ...
  #1 (permalink)  
Antiguo 22/06/2005, 17:18
 
Fecha de Ingreso: junio-2005
Mensajes: 6
Antigüedad: 18 años, 10 meses
Puntos: 0
Encontrar la duplicada (ORACLE)

Tengo que encontrar un registro duplicado con una consulta sql en un oracle 8.1.7.
Para que exista un duplicado, al menos deben haber 2 registrs en una tabla,
yo necesito encontrar solo uno(el duplicado, no el original).
Espero haber explicado bién .

Salu2.
  #2 (permalink)  
Antiguo 22/06/2005, 19:56
Avatar de kikolice  
Fecha de Ingreso: marzo-2004
Mensajes: 1.510
Antigüedad: 20 años, 1 mes
Puntos: 7
se hacia mas o menos asi

select count(distinct(clave))
from tabla
having count(distinct(clave)) > 1
__________________
Blogzote.com :-) Mi blog
  #3 (permalink)  
Antiguo 23/06/2005, 06:54
 
Fecha de Ingreso: junio-2005
Mensajes: 6
Antigüedad: 18 años, 10 meses
Puntos: 0
Ok, eso funciona, pero para saber cuantos reg. distintos tengo.
La idea es la siguiente :
select * from nombre_tabla, desplegaria lo siguiente

rowid campo1 campo2 campo3
1 11111111 22222222 33333333
2 aaaaaaaa bbbbbbbb cccccccc
3 dddddddd eeeeeeee gggggggg
4 11111111 22222222 33333333

lo que necesito que haga es que la sql me muestre solo el registro duplicado, en este caso el 4
  #4 (permalink)  
Antiguo 23/06/2005, 08:14
Avatar de haron  
Fecha de Ingreso: febrero-2004
Ubicación: Cádiz (refinitivo)
Mensajes: 632
Antigüedad: 20 años, 2 meses
Puntos: 3
en MySQL lo tienes facil:
Código:
select columna1, columna2, columna3, group_concat(id) columnas_repetidas
from tabla
group by columna1, columna2, columna3
having count(*) > 1
la ultima columna serian los "id" de las columnas repetidas ("id" es la clave primaria).

en Oracle, la cosa se complica:
Código:
select id, columna1, columna2, columna3
from tabla t
where exist(
  select null
  from tabla
  group by columna1, columna2, columna3
  having count(*) > 1
  and columna1 = t.columna1
  and columna2 = t.columna2
  and columna3 = t.columna3)
order by columna1, columna2, columna3
la anterior consulta te mostrara los "id" de los registros duplicados. no lo he probado porque no tengo a mano Oracle, pero creo que funcionara.
__________________
Si ocurre algo importante, estamos afuera fumándonos unos cigarritos.
  #5 (permalink)  
Antiguo 23/06/2005, 09:53
Avatar de sir_joshua  
Fecha de Ingreso: diciembre-2004
Mensajes: 411
Antigüedad: 19 años, 4 meses
Puntos: 0
mmm entiendo que quieres hayar un registro duplicado en una tabla, si es asi, podrias usar esto:

select a.rowid, a.col_1, a.col_2
from t1 a
where a.col_1 in (
select b.col_1 from t1 b where a.rowid <> b.rowid)
or a.col_2 in (
select b.col_2 from t1 b where a.rowid <> b.rowid)

aki te puse para que busque conicidencias en dos columnas dentro de una misma tabla... si necesitas mas columnas solo agrega otra clausula 'OR' dentro del 'WHERE' principal.

salu2.
__________________
http://sir-joshua.hi5.com
Mex. Mex.
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 04:27.