Ver Mensaje Individual
  #13 (permalink)  
Antiguo 11/01/2013, 02:31
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 2 meses
Puntos: 574
Respuesta: Consulta en varias tablas.

Cita:
Yo, aunque fuera por seguridad, pondría el where dentro de cada una de las subqueries.Asi mysql filtra antes, y el resulset que maneja es mucho menor.
Era la primera opción propuesta.


Código MySQL:
Ver original
  1. SELECT sbc.id_aviso
  2.      FROM (
  3.    SELECT g.id_aviso FROM facturas g
  4.    UNION ALL  
  5.    SELECT p.id_aviso FROM facturas_2011 p
  6.    UNION ALL
  7.    SELECT i.id_aviso  FROM facturas_2012 i
  8.    ) as sbc
  9. WHERE sbc.id_aviso='86';

El resultado de id_aviso donde id_aviso=86 es 86 luego porque molestar al servidor para preguntar lo que ya sabes...excepto que lo uses para saber si existe o no el aviso 86....

No tendria mas sentido algo asi:

Código MySQL:
Ver original
  1. SELECT sbc.id_aviso,sbc.numFra,sbc.fechaAviso
  2.      FROM (
  3.    SELECT g.id_aviso,g.numFra,g.fechaAviso  FROM facturas g
  4.    UNION ALL  
  5.    SELECT p.id_aviso,p.numFra,p.fechaAviso  FROM facturas_2011 p
  6.    UNION ALL
  7.    SELECT i.id_aviso,i.numFra,i.fechaAviso   FROM facturas_2012 i
  8.    ) as sbc
  9. WHERE sbc.id_aviso='86';

donde obtienes la factura y la fecha del aviso... es un ejemplo quizas sin sentido .... claro...

Cita:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '".
  "FROM (SELECT f.realizacion,f.material FROM  facturas f ".
  "UN' at line 1
Por cierto el error se produjo porque al copiar pegar te llevaste ruido ... esas  seguramente son los tabuladores.....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 11/01/2013 a las 02:38