2010-08-08 15 views

Respuesta

16

Hace falta un alias para la subconsulta, y hay que aplicar las condiciones ya sea a ambas consultas que la unión:

SELECT MAX(DateTime) 
FROM (

    SELECT DateTime 
    FROM Class_Searches 
    WHERE User_Email = '[email protected]' 
    AND DateTime > NOW() - INTERVAL 30 DAY 

    UNION ALL 

    SELECT DateTime 
    FROM Book_Searches 
    WHERE User_Email = '[email protected]' 
    AND DateTime > NOW() - INTERVAL 30 DAY 

) AS x 

o devolver datos de manera que se puede aplicar la condición en la consulta externa:

SELECT MAX(DateTime) 
FROM (

    SELECT DateTime, User_Email 
    FROM Class_Searches 

    UNION ALL 

    SELECT DateTime, User_Email 
    FROM Book_Searches 

) AS x 
WHERE User_Email = '[email protected]' 
AND DateTime > NOW() - INTERVAL 30 DAY 
1

Un alias es cuando cambia el nombre de algo, como SELECT t.time from table t, t es el alias de esa tabla. En este caso, es necesario dar un alias a las tablas generadas por las subconsultas:

SELECT MAX(ut.DateTime) 
FROM (
(
    SELECT DateTime 
    FROM Class_Searches 
) cs 
UNION ALL (
    SELECT DateTime 
    FROM Book_Searches 
) bs 
) ut 
WHERE User_Email = '[email protected]' 
AND ut.DateTime > NOW() - INTERVAL 30 DAY 

Eso todavía no funcionará sin embargo, porque usted no tiene una columna user_email regresaron de la unión. Por lo tanto, trate de:

SELECT MAX(ut.DateTime) 
FROM (
(
    SELECT DateTime, User_Email 
    FROM Class_Searches 
) cs 
UNION ALL (
    SELECT DateTime, User_Email 
    FROM Book_Searches 
) bs 
) ut 
WHERE ut.User_Email = '[email protected]' 
AND ut.DateTime > NOW() - INTERVAL 30 DAY 

Es posible que que aún no funciona bien porque la sintaxis de la UNIÓN, pero al menos es mucho más cerca.

+0

me sale este error con la segunda consulta: # 1064 - Usted tiene un error en su sintaxis SQL; revise el manual que corresponde a su versión del servidor MySQL para la sintaxis correcta para usar cerca de 'bs ) ut WHERE ut.User_Email =' [email protected] ' AND ut.DateTime> NOW() - INTER' en la línea 10 – babonk

Cuestiones relacionadas