L'erreur est claire - il vous suffit de créer un alias pour la sous-requête après sa fermeture ) et utilisez-le dans votre ON clause puisque chaque table, dérivée ou réelle, doit avoir son propre identifiant. Ensuite, vous devrez inclure movie_id dans la liste de sélection de la sous-requête pour pouvoir s'y joindre. Puisque la sous-requête inclut déjà WHERE popularity = 0 , vous n'avez pas besoin de l'inclure dans le ON de la jointure clause.
LEFT JOIN (
SELECT
movie_id,
movie_name
FROM movies
WHERE popularity = 0
ORDER BY movie_name
LIMIT 1
) the_alias ON t1.movie_id = the_alias.movie_id
Si vous utilisez l'une de ces colonnes dans le SELECT externe , référencez-le via the_alias.movie_name par exemple.
Mettre à jour après avoir mieux compris l'exigence :
Pour en obtenir un par groupe, vous pouvez utiliser un agrégat MAX() ou MIN() sur le movie_id et regroupez-le dans la sous-requête. Aucune sous-requête LIMIT est alors nécessaire -- vous recevrez le premier movie_id par nom avec MIN() ou le dernier avec MAX() .
LEFT JOIN (
SELECT
movie_name,
MIN(movie_id) AS movie_id
FROM movies
WHERE popularity = 0
GROUP BY movie_name
) the_alias ON t1.movie_id = the_alias.movie_id