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