Este es un pequeño truco (o dos, mejor dicho) para cuando los resultados de una consulta salen repetidos, es decir, en una consulta del tipo:
SELECT autor FROM notas
el resultado va a ser el autor de cada nota; pero si un autor participa de varias notas, va a aparecer varias veces.
Este es el caso más simple. Hay consultas mucho más complejas que también devuelven resultados repetidos.
Podemos atacar este problema de dos maneras:
SELECT DISTINCT autor FROM notas
o bien:
SELECT autor FROM notas GROUP BY autor
En tablas con relaciones uno a muchos (o muchos a muchos) se pueden tambien generar duplicados con el mismo id. Esto se resuelve agregando “GROUP BY id” al final, por ejemplo:
SELECT n.*
FROM notas AS n
LEFT JOIN imagenes_notas AS imnot
ON imnot.id_nota=n.id
LEFT JOIN imagenes AS i
ON i.id=imnot.id_imagen
Esta imagen nos daría varios registros por cada nota, uno con cada imagen distinta. Si sólo nos interesa la primer imagen y no queremos resultados repetidos, podríamos escribir:
SELECT n.*
FROM notas AS n
LEFT JOIN imagenes_notas AS imnot
ON imnot.id_nota=n.id
LEFT JOIN imagenes AS i
ON i.id=imnot.id_imagen
GROUP BY n.id
Y así solucionamos el tema de los registros repetidos.
