Ver Mensaje Individual
  #2 (permalink)  
Antiguo 12/07/2010, 08:19
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: 2 Consultas a 1 sobre la misma Tabla

DISTINCT opera sobre el registro completo y no sobre un único campo. Pero aquí tienes un problema doble: SI bien es fácil obtener un único valor basado en la columna "Igualdad", las otras dos tienen diferentes valores.
¿Cuáles de esos valores quieres?, porque no dices que no quieres repeticiones de "Igualdad"...

Esto es importante, porque dependiendo de qué orden se les de a esos valores, será el registro que queda:
Caso 1:
Código MySQL:
Ver original
  1. mysql> SELECT *
  2.     -> FROM tabla t
  3.     -> GROUP BY Igualdad;
  4. +---------+-------+------------------+
  5. | IdTabla | Grupo | Igualdad         |
  6. +---------+-------+------------------+
  7. |       8 |    44 | 2010710121317120 |
  8. |      11 |    44 | 2010710125131670 |
  9. |      12 |    13 | 201071013011157  |
  10. |      13 |    44 | 2010710131218840 |
  11. |      14 |    13 | 2010710131949260 |
  12. |      15 |    44 | 2010710132348120 |
  13. |      16 |    44 | 2010710132418390 |
  14. |       4 |    13 | 201079192130359  |
  15. +---------+-------+------------------+
  16. 8 rows in set (0.00 sec)

Caso 2:
Código MySQL:
Ver original
  1. mysql> SELECT *
  2.     -> FROM (SELECT *
  3.     ->   FROM tabla t
  4.     ->   ORDER BY Grupo DESC) T1
  5.     -> GROUP BY Igualdad;
  6. +---------+-------+------------------+
  7. | IdTabla | Grupo | Igualdad         |
  8. +---------+-------+------------------+
  9. |      10 |   155 | 2010710121317120 |
  10. |      11 |    44 | 2010710125131670 |
  11. |      12 |    13 | 201071013011157  |
  12. |      13 |    44 | 2010710131218840 |
  13. |      14 |    13 | 2010710131949260 |
  14. |      15 |    44 | 2010710132348120 |
  15. |      16 |    44 | 2010710132418390 |
  16. |       6 |   157 | 201079192130359  |
  17. +---------+-------+------------------+
  18. 8 rows in set (0.00 sec)

Como puedes ver, los resultados son diferentes.


Tips:

¿Por qué usas campos tan grandes, innecesariamente.?

Si el grupo es un valor numérico, como aparece en la lista, ¿por qué lo defines como VARCHAR?

¿Por qué usas un VARCHAR para guardar un valor de fecha y hora? Corresponde usar DATETIME o TIMESTAMP, ahorras espacio y ganas en eficiencia de consultas.

Esta sería una estructura más razonable:
Código MySQL:
Ver original
  1. DROP TABLE IF EXISTS `tabla`;
  2. CREATE TABLE  `tabla` (
  3.   `IdTabla` int(11) NOT NULL auto_increment,
  4.   `Grupo` int(11) NOT NULL,
  5.   `Igualdad` varchar(20) NOT NULL,
  6.   PRIMARY KEY  (`IdTabla`)
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)