Ver Mensaje Individual
  #14 (permalink)  
Antiguo 05/04/2013, 15:55
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: Problema con consulta varias tablas

Hola de nuevo...

Insisto, no hay necesidad de agregar los campos de manera física a la tabla, simplemente tienes que agregar los campos como NULL, pero desde el select... checa este ejemplo:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM t1;
  2. +----------+------------+
  3. | placa    | estado     |
  4. +----------+------------+
  5. | uno-1    | texas      |
  6. | dos-2    | california |
  7. | tres-3   | new york   |
  8. | cuatro-4 | NULL       |
  9. +----------+------------+
  10. 4 rows in set (0.09 sec)
  11.  
  12. mysql> SELECT * FROM t2;
  13. +-----------+-------------+
  14. | placa     | propietario |
  15. +-----------+-------------+
  16. | uno-10    | Hugo        |
  17. | dos-20    | Paco        |
  18. | tres-30   | Luis        |
  19. | cuatro-40 | Pepe        |
  20. +-----------+-------------+
  21. 4 rows in set (0.00 sec)
  22.  
  23. mysql> SELECT * FROM t3;
  24. +------------+----------+-------------+
  25. | placa      | estado   | propietario |
  26. +------------+----------+-------------+
  27. | otro-uno-1 | Illinois | David       |
  28. | otro-dos-2 | Tennese  | Jorge       |
  29. +------------+----------+-------------+
  30. 2 rows in set (0.00 sec)

observa que las tres tablas tienen el campo placa (que es el que te interesa para la búsqueda) la primer tabla tiene estado, pero no tiene propietario, la segunda tabla tiene propietario, pero no tiene estado, y la tercer tabla si posee los tres campos... tú podrías hacer esto:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM (
  2.     ->   SELECT placa, estado, NULL propietario FROM t1
  3.     ->   UNION ALL
  4.     ->   SELECT placa, NULL estado, propietario FROM t2
  5.     ->   UNION ALL
  6.     ->   SELECT placa, estado, propietario FROM t3
  7.     -> ) T
  8.     -> WHERE
  9.     -> placa LIKE '%dos%';
  10. +------------+------------+-------------+
  11. | placa      | estado     | propietario |
  12. +------------+------------+-------------+
  13. | dos-2      | california | NULL        |
  14. | dos-20     | NULL       | Paco        |
  15. | otro-dos-2 | Tennese    | Jorge       |
  16. +------------+------------+-------------+
  17. 3 rows in set (0.00 sec)

De manera programática podrías darle tratamiento a estos campos NULOS, pero sin alterar tu modelo de BD.

Saludos
Leo.