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

Identificar elementos iguales en una fila

Estas en el tema de Identificar elementos iguales en una fila en el foro de Mysql en Foros del Web. Estimados amigos, Espero se encuentren muy bien, nuevamente aquí solicitando su ayuda. Quisiera ver si existe una función en mysql que me permita verificar si ...
  #1 (permalink)  
Antiguo 05/03/2013, 17:40
 
Fecha de Ingreso: diciembre-2011
Mensajes: 90
Antigüedad: 12 años, 3 meses
Puntos: 0
Identificar elementos iguales en una fila

Estimados amigos,

Espero se encuentren muy bien, nuevamente aquí solicitando su ayuda.

Quisiera ver si existe una función en mysql que me permita verificar si hay datos iguales en un mismo registro (en una fila), ya que necesito que en la misma fila no existan elementos iguales.

Ya lo realice con la ayuda de php pero el código es muy lento, y me gustraía ver si se puede hacer más eficiente el programa con mysql


Agradezco su tiempo y ayuda amigos
  #2 (permalink)  
Antiguo 06/03/2013, 10:48
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Identificar elementos iguales en una fila

Hola yamsita:

Creo que tendrías que explicarnos un poco mejor a qué te refieres con DATOS IGUALES, ya que puede prestarse a confusiones. Imagina que tienes la siguiente tabla:

Código MySQL:
Ver original
  1. mysql> SELECT id, descripcion FROM tabla;
  2. +------+-------------+
  3. | id   | descripcion |
  4. +------+-------------+
  5. |    1 | uno         |
  6. |    2 | dos         |
  7. |    3 | tres        |
  8. |    1 | uno         |
  9. |    2 | otro dos    |
  10. |   33 | tres        |
  11. +------+-------------+
  12. 6 rows in set (0.00 sec)

Para mi, en esta tabla el único dato DUPLICADO sería el id = 1 con descripcion = 'uno'. Esto podrías obtenerlo fácilmente así:

Código MySQL:
Ver original
  1. mysql> SELECT id, descripcion FROM tabla
  2.     -> GROUP BY id, descripcion HAVING COUNT(*) > 1;
  3. +------+-------------+
  4. | id   | descripcion |
  5. +------+-------------+
  6. |    1 | uno         |
  7. +------+-------------+
  8. 1 row in set (0.00 sec)

Sin embargo, observa también que hay dos id's = 2 pero que cada uno tiene una descripción distinta ('dos' y 'otro dos') ... lo mismo pasa con la la
descripción = 'tres' ya que tiene dos id's distintos (3 y 33) para estos casos la consulta es similar a la de arriba, pero con una pequeña variante:

Código MySQL:
Ver original
  1. mysql> SELECT T1.* FROM tabla T1 INNER JOIN
  2.     -> ( SELECT id FROM tabla
  3.     ->   GROUP BY id HAVING COUNT(*) > 1) T2 ON T1.id = T2.id
  4.     -> ORDER BY T1.id;
  5. +------+-------------+
  6. | id   | descripcion |
  7. +------+-------------+
  8. |    1 | uno         |
  9. |    1 | uno         |
  10. |    2 | dos         |
  11. |    2 | otro dos    |
  12. +------+-------------+
  13. 4 rows in set (0.00 sec)

Algo similar sería para la descripción, pero cambiando la subconsulta T2 y la condición de unión.

has la prueba y nos comentas si esto es lo que querías obtener.

Saludos
Leo.
  #3 (permalink)  
Antiguo 06/03/2013, 12:19
 
Fecha de Ingreso: diciembre-2011
Mensajes: 90
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Identificar elementos iguales en una fila

hola ardo_josue mil gracias por tu tiempo, pero creo que no me explique muy bien, te comento nuevamente:

lo que necesito es verificar cuantos elementos iguales tengo en una fila, por ejemplo:

+---+----------------+---------------------+-------------------+
|id | descripcion | 2a descripcion | 3a descricpion |
+----+---------------+---------------------+-------------------+
| 1 | uno | uno | |
+----+---------------+---------------------+-------------------+
| 2 | dos | | dos |
+----+---------------+---------------------+-------------------+
| 3 | tres | tres | tres |
+----+---------------+---------------------+-------------------+

lo que necesito es identificar los datos que sean iguales en la fila, para despues cambiarlos y que no hayan elementos iguales en una fila, el resultado deberia ser algo como esto:

+---+----------------+---------------------+-------------------+
|id | descripcion | 2a descripcion | 3a descricpion |
+----+---------------+---------------------+-------------------+
| 1 | uno | tres | dos |
+----+---------------+---------------------+-------------------+
| 2 | dos | uno | tres |
+----+---------------+---------------------+-------------------+
| 3 | tres | | |
+----+---------------+---------------------+-------------------+

algunas funciones en mysql que puedan ayudarme?


muchas gracias por tu tiempo, espero ser mas especifica esta vez
saludos
  #4 (permalink)  
Antiguo 06/03/2013, 12:55
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Identificar elementos iguales en una fila

Hola de nuevo yamsita:

No, pues nada que ver lo que preguntaste a lo que conteste

No hay (por lo menos en lo que mis conocimientos abarcan) ninguna función en MySQL para hacer lo que quieres, además no veo ninguna lógica en cuanto a lo que haces, como para poder indicarte algún camino para hacerlo más rápido. Sin embargo, tengo la inquietud de si esta es una tarea que tienes que realizar de manera cotidiana o si es un caso extraordinario. Si fuera el primer caso, creo que te convendría implementar algún tipo de estrategia de validación al momento de que se captura un nuevo registro, en lugar de tener que hacer actualizaciones o verificaciones posteriores. Si es un proceso que debes realizar de manera extraordinaria, pues valora si en realidad necesitas mejorar los tempos de respuesta de la solución que tienes con programación. Finalmente, te podría recomendar que publicaras lo que estás haciendo en el foro de PHP, explicando tu problema y qué es lo que quieres hacer. Igual y sería más factible, que alguien con conocimientos en ese lenguaje de indique alguna otra alternativa para llegar al mismo resultado

Saludos
Leo.
  #5 (permalink)  
Antiguo 06/03/2013, 15:19
 
Fecha de Ingreso: diciembre-2011
Mensajes: 90
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Identificar elementos iguales en una fila

jajajaja Leo, creo que no explique lo suficiente desde el inicio, pero bueno.

Si realmente este es un proceso que genero de forma cotidiana y parto directamente de una matriz, o sea que la tabla no se genera a raíz de un registro si no que ya me dan la tabla con este formato.

Lo he realizado en php, ya que es el lenguaje que más domino... pero quería averiguar su existía la posibilidad de maximizar el código con mysql, estuve leyendo pero no encontré nada similar y decidí preguntarle a los expertos


Muchas gracias por tu apoyo, tiempo y excelente actitud para ayudarme, en verdad gracias.

Etiquetas: elementos, fila, iguales, php, sql
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 09:13.