Quel est le problème avec cette requête MySQL? SELECT * "x", comment utiliser x de nouveau plus tard?

La suite de requête MySQL:

select `userID` as uID,
(select `siteID` from `users` where `userID` = uID) as `sID`,
from `actions`
where `sID` in (select `siteID` from `sites` where `foo` = "bar")
order by `timestamp` desc limit 100

...retourne une erreur:

Unknown column 'sID' in 'IN/ALL/ANY subquery'

Je ne comprends pas ce que je fais mal ici. Le sID chose n'est pas censé être une colonne, mais le "alias" (qu'est-ce que cela s'appelle?) J'ai créé par l'exécution de (select siteID from users where userID = uID) as sID. Et il n'est même pas à l'intérieur de la IN sous-requête.

Des idées?


Edit: @Roland: Merci pour votre commentaire. J'ai trois tables, actions, users et sites. Le tableau actions contient un userID champ, ce qui correspond à une entrée dans le users table. Chaque utilisateur de ce tableau (users) a un siteID.
Je suis en train de sélectionner les récentes actions de la actions table, et le lien à la users et sites de table pour savoir qui a effectué ces actions, et sur quel site. L'espoir qui fait sens 🙂

La OÙ est évaluée avant la liste de sélection des colonnes peut être calculée. Ainsi, au moment de l'évaluation de l'endroit OÙ la colonne sID simplement n'existe pas encore. Qu'essayez-vous de faire? Vous avez probablement besoin d'une simple JOINTURE entre les actions et les utilisateurs, mais Il est clair pour moi ce que vous essayez d'atteindre. expliquez que, et je peux suggérer une requête.

OriginalL'auteur Mathias Bynens | 2009-12-30