Consulta liada...

10/06/2004 - 12:28 por Fadoyo | Informe spam
Buenas a todos, tengo una tabla TX que tiene un identificador por fila,
luego tiene dos campos C1 y C2, que hacen referencia a indices de dos tablas
T1 y T2, el problema es que programe mal y metí en la tabla TX por cada
relacion TX-T1-T2 dos registros de modo que queria la informacion asi:

T1 : CAMPO 1
IndiceT11
Indice T12
T2: CAMPO1
Indice T21
Indice T22
TX: CAMPO1-CAMPO2-CAMPO3
IndiceTX1-IndiceT11-IndiceT22
IndiceTX2-IndiceT11-IndiceT22
IndiceTX3-IndiceT11-IndiceT21
IndiceTX4-IndiceT11-IndiceT21

¿como puedo hacer una consulta SQL que me elimine de los dos registros repes
que tengo por cada relacion 1 de ellos, me da igual cual?

¿Podriais ayudarme?

Saludos
Fadoyo
 

Leer las respuestas

#1 ulises
10/06/2004 - 15:27 | Informe spam
Si solo son duplicados y deseamos eliminar los que tiene
clave mayor puedes sacar los indices de TX a eliminar de
la siguiente manera :

select max(campo1)
from TX
group by campo2, campo3

si además de los duplicados tienes registros que no están
duplicados pueden incluir la verificación que solo se
muestren los duplicados :

select max(campo1)
from TX
group by campo2, campo3
having count(*) = 2

luego de ello puedes eliminar los registros incluyendo el
criterio en un subselect :

delete from TX where campo1 in ( selección-anterior)

si lo que tienes es registros duplicados, triplicados,
etc ... , puedes obtener los MINIMOS de cada grupo y
utilizar un NOT IN de la siguiente manera :

delete from TX
where campo1 not in
(
select min(campo1)
from TX
group by campo2, campo3
)

no es muy eficiente pero creo que en este caso no buscas
tanto eficiencia ya que será un proceso por única vez.

Saludos,
Ulises

Buenas a todos, tengo una tabla TX que tiene un


identificador por fila,
luego tiene dos campos C1 y C2, que hacen referencia a


indices de dos tablas
T1 y T2, el problema es que programe mal y metí en la


tabla TX por cada
relacion TX-T1-T2 dos registros de modo que queria la


informacion asi:

T1 : CAMPO 1
IndiceT11
Indice T12
T2: CAMPO1
Indice T21
Indice T22
TX: CAMPO1-CAMPO2-CAMPO3
IndiceTX1-IndiceT11-IndiceT22
IndiceTX2-IndiceT11-IndiceT22
IndiceTX3-IndiceT11-IndiceT21
IndiceTX4-IndiceT11-IndiceT21

¿como puedo hacer una consulta SQL que me elimine de los


dos registros repes
que tengo por cada relacion 1 de ellos, me da igual cual?

¿Podriais ayudarme?

Saludos
Fadoyo


.

Preguntas similares