![]() |
Lista de registros unicos (varios campos) a partir de un solo campo con duplicidades Hola: Tengo un problema al que le he dado muchas vueltas y no he sido capaz de resolver. Utilizo una tabla, denominada CLIENTES, con datos de empresas (ID, Empresa, Direccion, correoElectronico, etc. ) Me he dado cuenta que en la base de datos aparecen duplicidades del tipo: ID Empresa Direccion CorreoElectronico 001 [El Corte Ingles ] [Plza.Cataluña, 1] [[email protected] ] 112 [SIC ] [C/ Vifre, 1 ] [[email protected] ] 132 [SIC S.A. ] [Calle Vifre, 1 ] [[email protected] ] 213 [METRASONI ] [Duero, 13 ] [[email protected]] 324 [METRASONI SL ] [C/Duero, 1 ] [[email protected]] 515 [METRASONI S.L.] [Duero - 13 ] [[email protected]] Los registros duplicados serían el ID=112 e ID =132, por una lado y los ID=213, ID=324 e ID=515 por otro. Necesito tener una lista de las empresas (Nombre, Direccion y correo electrónico) sin duplicidades (independientemente de si el nombre y la direccion coincide o no y considerando el campo de CorreoElectronico como campo de decisión para las duplicidades). El resultado de los seis registros anteriores una vez efectuada la selección debería quedar: ID Empresa Direccion CorreoElectronico 001 [El Corte Ingles] [Plza.Cataluña, 1] [[email protected] 112 [SIC] [C/ Vifre, 1] [[email protected] 213 [METRASONI] [Duero, 13] [[email protected]] O sea, el segundo registro y siguientes (duplicados) ya no deberían aparecer en la salida Como el nombre de la empresa y la direccion, de los registros duplicados, no son exactamente iguales NO los puedo utilizar con SELECT DISTINCT CorreoElectronico, Empressa FROM CLIENTES. Tampoco puedo utilizar SELECT CorreoElectronico FROM CLIENTES GROUP BY CorreoElectronico. ya que solo obtendría la lista de los correos electronicos no duplicados, pero no sabría a que empresa pertenecen. Si utilizo la subconsulta del tipo SELECT CorreoElectronico, Empresa, Direccion FROM CLIENTES WHERE CorreoElectronico IN (SELECT CorreoElectronico FROM CLIENTES Group By CorreoElectronico Having count(*) >1) ORDER BY CorreoElectronico optengo todos los registros duplicados, una sola vez tal como deseo, pero no tengo el resto de registros que no están duplicados. Hay alguien que pueda decirme como solventar este problema Esperando vuestras respuestas, recibid mi agredecimiento de antemano. |
Respuesta: Lista de registros unicos (varios campos) a partir de un solo campo con du mira, en realidad no hay duplicidad, ya que si la llave primaria es el ID, no se repiten y el nombre de la empresa tampoco, todos los nombres son diferentes, ID Empresa Direccion CorreoElectronico 001 [El Corte Ingles ] [Plza.Cataluña, 1] [[email protected] ] 112 [SIC ] [C/ Vifre, 1 ] [[email protected] ] 132 [SIC S.A. ] [Calle Vifre, 1 ] [[email protected] ] 213 [METRASONI ] [Duero, 13 ] [[email protected]] 324 [METRASONI SL ] [C/Duero, 1 ] [[email protected]] 515 [METRASONI S.L.] [Duero - 13 ] [[email protected] Sería duplicidad si estuviera así: 213 [METRASONI ] [Duero, 13 ] [[email protected]] 324 [METRASONI ] [C/Duero, 1 ] [[email protected]] y para que esto no sea permitido por el MDB, tendrias que poner como llaves primarias al ID y NOMBRE DE LA EMPRESA. --------------------------------------------------------------------------------------------- creo que para insertar correctamente debes crear un nombre único de la empresa para no dañar la integridad de tu tabla. De lo contrario con el ID de la empresa serviria para diferenciarlas -------------------------------------------------------------------------------------------------------- otra opcion es separar las empresas de los clientes, y anular la relacion de muchos a muchos, porque creo que *una empresa "tiene" de 1 a N clientes y *un cliente "es" de 1 a N empresas. ----------------------------------------------------------------------------------------------- espero haberte ayudado en ves de confundirte más!! saludos:-):-) |
Respuesta: Lista de registros unicos (varios campos) a partir de un solo campo con du Gracias Elias_Enki por contestar Estoy totalmente de acuerdo contigo, en que se deben crear claves primarias para reducir las duplicidades, pero no las puedo crear hasta que no corrija la base actual. Correjir la base de forma manual es bastante costoso, ya que tiene un número de registros considerables. Precisamente el problema que tengo es que en la base, tecnicamente, no hay duplicidades, pero SI QUE EXISTEN desde un punto de visto practico Lo que intento es quitar las duplicidades prácticas para dejar una base sin duplicidades, ni prácticas ni técnicas Una duplicidad práctica para mi, es por ejemplo: 213 [METRASONI ] [Duero, 1 ] [[email protected]] 324 [METRASONI SL ] [C/Duero, 1 ] [[email protected]] Aunque tal como dices, técnicamente, son diferentes, se trata de la misma empresa pero con los datos entrados de forma diferente. La única clave que me permite saber que estos registros están duplicados es el correo electrónico (es el mismo en los dos casos) y por tanto con quedarme con un solo registro (cualquiera de los dos) sería suficiente para mi, ya que he comprobado que este campo es correcto en todos los casos gracias |
| La zona horaria es GMT -6. Ahora son las 11:46. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.