Un alias est Lorsque vous renommez quelque chose, comme SELECT t.time from table t
, t
est l'alias de cette table. Dans ce cas, vous devez donner un alias aux tables générées par les sous-requêtes:
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
Cela ne fonctionne toujours pas bien, parce que vous ne disposez pas d'une colonne user_email retourné de l'Union. Ainsi, essayez:
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
Il est possible que cela ne fonctionne toujours pas juste à cause de la syntaxe UNION, mais au moins il est beaucoup plus proche.
-je obtenir cette erreur avec la seconde requête: # 1064 - Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de 'bs ) ut O ut ut.User_Email =' [email protected] ' ET ut.DateTime> MAINTENANT() - INTER' à la ligne 10 – babonk