SELECT a.actor_ida, a.first_name1, a.last_name, FROM actor a LEFT JOIN film_actora fa ON a.actor_id = fa.actor_id LEFT JOIN rental r ON fa.film_id = r.inventory_id WHERE r.rental_date IS NUL OR r.rental_date < DATE_SUB (NOW (), INTERVAL 1 YEAR) GROUP BY a.actor_id, a.first_name, a.last_name
The provided SQL statement has a few issues that need to be corrected. Here's a step-by-step breakdown of the issues and the corrected SQL statement:
- There are typos in the column aliases and table aliases (e.g.,
actor_ida
,first_name1
,film_actora
). - The
FROM
clause has a trailing comma that should be removed. - The
WHERE
clause has a typo inIS NUL
which should beIS NULL
. - The
DATE_SUB
function is missing a space before the opening parenthesis. - The
GROUP BY
clause should match the selected columns exactly, including the aliases.
Here is the corrected SQL statement:
SELECT
a.actor_id,
a.first_name,
a.last_name
FROM
actor a
LEFT JOIN film_actor fa ON a.actor_id = fa.actor_id
LEFT JOIN inventory i ON fa.film_id = i.film_id
LEFT JOIN rental r ON i.inventory_id = r.inventory_id
WHERE
r.rental_date IS NULL
OR r.rental_date < DATE_SUB (NOW (), INTERVAL 1 YEAR)
GROUP BY
a.actor_id,
a.first_name,
a.last_name;
Note that I've also corrected the join condition from fa.film_id = r.inventory_id
to fa.film_id = i.film_id
and i.inventory_id = r.inventory_id
because film_actor.film_id
should be joined with inventory.film_id
, and rental.inventory_id
should be joined with inventory.inventory_id
based on the provided table schema.
- Public
- ·
- Tue, 12 Dec 2023 12:25:06 GMT