Ver Mensaje Individual
  #4 (permalink)  
Antiguo 04/04/2013, 16:08
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

Mucho cuidado edwinarley:

Cuando se te pida que leas la documentación HAZLO , porque sigues cometiendo errores infantiles... La liga que te puse indica la sintaxis que tienes que poner para usar el UNION, si lees, hay una parte que dice

Cita:
Si quiere usar una cláusula ORDER BY o LIMIT para ordenar o limitar el resultado UNION entero, ponga entre paréntesis los comandos SELECT individuales y ponga el ORDER BY o LIMIT tras el último. El siguiente ejemplo usa ambas cláusulas:

Código MySQL:
Ver original
  1. (SELECT a FROM tbl_name WHERE a=10 AND B=1)
  2. (SELECT a FROM tbl_name WHERE a=11 AND B=2)
Otra cosa importante, el error que colocas NO ES UN ERROR DE MYSQL, es un error de PHP, son dos cosas absolutamente distintas... Este foro es de MySQL y por lo tanto debes enfocarte sólo es eso... ejecuta las consultas directamente en una consola de MySQL, no desde tu página de PHP, y si necesitas ayuda en PHP entonces publica tu pregunta en el foro correspondiente:

http://www.forosdelweb.com/f18/

Checa este script, aquí aparecen dos soluciones, una como te dice la documentación oficial y otra que es como yo te dije desde mi primer post.

Código MySQL:
Ver original
  1. mysql> SELECT * FROM T1;
  2. +----------+
  3. | placa    |
  4. +----------+
  5. | uno-1    |
  6. | dos-2    |
  7. | tres-3   |
  8. | cuatro-4 |
  9. +----------+
  10. 4 rows in set (0.00 sec)
  11.  
  12. mysql> SELECT * FROM T2;
  13. +-----------+
  14. | placa     |
  15. +-----------+
  16. | uno-10    |
  17. | dos-20    |
  18. | tres-30   |
  19. | cuatro-40 |
  20. +-----------+
  21. 4 rows in set (0.00 sec)
  22.  
  23. mysql> (SELECT * FROM t1 WHERE placa LIKE '%dos%')
  24.     -> UNION
  25.     -> (SELECT * FROM t2 WHERE placa LIKE '%dos%')
  26.     -> ORDER BY placa DESC;
  27. +--------+
  28. | placa  |
  29. +--------+
  30. | dos-20 |
  31. | dos-2  |
  32. +--------+
  33. 2 rows in set (0.00 sec)
  34.  
  35. mysql> SELECT * FROM
  36.     -> ( SELECT * FROM T1
  37.     ->   UNION ALL
  38.     ->   SELECT * FROM T2 ) T
  39.     -> WHERE T.placa LIKE '%dos%'
  40.     -> ORDER BY T.placa;
  41. +--------+
  42. | placa  |
  43. +--------+
  44. | dos-2  |
  45. | dos-20 |
  46. +--------+
  47. 2 rows in set (0.00 sec)

Saludos
Leo.