Ver Mensaje Individual
  #2 (permalink)  
Antiguo 01/12/2011, 11:57
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 meses
Puntos: 447
Respuesta: Como unir dos tablas

Hola cnyx:

Lo que quieres hacer es lo que hace la UNION, no mencionas qué BD estás utilizando, pero esta operación es soportada por casi todos los manejadores, así es que no deberías tener problemas para implementarlo. Checa este script en MySQL:

Código MySQL:
Ver original
  1. mysql> CREATE TABLE tabla1 (id INT, descripcion VARCHAR(10));
  2. Query OK, 0 rows affected (0.13 sec)
  3.  
  4. mysql> INSERT INTO tabla1 VALUES (1, 'uno'), (2, 'dos'), (3, 'tres');
  5. Query OK, 3 rows affected (0.02 sec)
  6. Records: 3  Duplicates: 0  Warnings: 0
  7.  
  8. mysql> SELECT * FROM tabla1;
  9. +------+-------------+
  10. | id   | descripcion |
  11. +------+-------------+
  12. |    1 | uno         |
  13. |    2 | dos         |
  14. |    3 | tres        |
  15. +------+-------------+
  16. 3 rows in set (0.00 sec)
  17.  
  18. mysql> CREATE TABLE tabla2 (id INT, descripcion VARCHAR(10));
  19. Query OK, 0 rows affected (0.11 sec)
  20.  
  21. mysql> INSERT INTO tabla2 VALUES (2, 'dos'), (3, 'otro tres'), (4, 'cuatro') ;
  22. Query OK, 3 rows affected (0.01 sec)
  23. Records: 3  Duplicates: 0  Warnings: 0
  24.  
  25. mysql> SELECT * FROM tabla2;
  26. +------+-------------+
  27. | id   | descripcion |
  28. +------+-------------+
  29. |    2 | dos         |
  30. |    3 | otro tres   |
  31. |    4 | cuatro      |
  32. +------+-------------+
  33. 3 rows in set (0.00 sec)
  34.  
  35. mysql> SELECT * FROM tabla1 UNION SELECT * FROM tabla2;
  36. +------+-------------+
  37. | id   | descripcion |
  38. +------+-------------+
  39. |    1 | uno         |
  40. |    2 | dos         |
  41. |    3 | tres        |
  42. |    3 | otro tres   |
  43. |    4 | cuatro      |
  44. +------+-------------+
  45. 5 rows in set (0.00 sec)
  46.  
  47. mysql> SELECT * FROM tabla1 UNION ALL SELECT * FROM tabla2;
  48. +------+-------------+
  49. | id   | descripcion |
  50. +------+-------------+
  51. |    1 | uno         |
  52. |    2 | dos         |
  53. |    3 | tres        |
  54. |    2 | dos         |
  55. |    3 | otro tres   |
  56. |    4 | cuatro      |
  57. +------+-------------+
  58. 6 rows in set (0.00 sec)

Observa que el registro 2 existe tanto en la tabla1 como en al tabla2 CON LA MISMA DESCRIPCIÓN, al hacer una UNION simple (primer consulta), los registros duplicados se eliminan (sólo aparece una vez), observa también que el registro 3 también aparece en las dos tablas, pero TIENE UNA DESCRIPCIÓN DIFERENTE, por lo tanto es tratado como un registro diferente.

Si quieres que aparezcan los registros duplicados simplemente haz un UNION ALL en lugar de uno sencillo (segunda consulta).

Saludos
Leo.