Ver Mensaje Individual
  #4 (permalink)  
Antiguo 29/02/2012, 10:12
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: no repetir registros de distintas tablas

Hola de nuevo:

Una de las características de la UNION, es que si no le pones el atributo ALL (UNION ALL) TE ELIMINA LOS REGISTROS DUPLICADOS, es decir, según yo no tendrías que hacer nada extra, sólo la unión normal... Checa este script:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM edicion_uno;
  2. +-----------------+
  3. | autor           |
  4. +-----------------+
  5. | nombreautoruno  |
  6. | nombreautordos  |
  7. | nombreautortres |
  8. +-----------------+
  9. 3 rows in set (0.00 sec)
  10.  
  11. mysql> SELECT * FROM edicion_dos;
  12. +----------------+
  13. | autor          |
  14. +----------------+
  15. | nombreautoruno |
  16. | nombreautordos |
  17. +----------------+
  18. 2 rows in set (0.00 sec)
  19.  
  20. mysql> SELECT * FROM edicion_tres;
  21. +-----------------+
  22. | autor           |
  23. +-----------------+
  24. | nombreautordos  |
  25. | nombreautortres |
  26. +-----------------+
  27. 2 rows in set (0.00 sec)
  28.  
  29. mysql> SELECT autor FROM edicion_uno
  30.     -> UNION
  31.     -> SELECT autor FROM edicion_dos
  32.     -> UNION
  33.     -> SELECT autor FROM edicion_tres;
  34. +-----------------+
  35. | autor           |
  36. +-----------------+
  37. | nombreautoruno  |
  38. | nombreautordos  |
  39. | nombreautortres |
  40. +-----------------+
  41. 3 rows in set (0.00 sec)


Observa que la unión me regresa SÓLO TRES AUTORES ya que los registros duplicados no aparecen. Si utilizas la cláusula ALL entonces sí te aparecen registros duplicados.

Código MySQL:
Ver original
  1. mysql> SELECT autor FROM edicion_uno
  2.     -> UNION ALL
  3.     -> SELECT autor FROM edicion_dos
  4.     -> UNION ALL
  5.     -> SELECT autor FROM edicion_tres;
  6. +-----------------+
  7. | autor           |
  8. +-----------------+
  9. | nombreautoruno  |
  10. | nombreautordos  |
  11. | nombreautortres |
  12. | nombreautoruno  |
  13. | nombreautordos  |
  14. | nombreautordos  |
  15. | nombreautortres |
  16. +-----------------+
  17. 7 rows in set (0.02 sec)

Si entendí mal el modelo de tus datos, por favor trata de aclarar mejor cómo están tus tablas y tus datos. Haz la prueba y nos comentas.

Saludos
Leo.