i need to output all the movies that both “Johnny Depp” and “Helena Bonham Carter” starred. I think my problem is that I dont no what to putt inside of the WHERE
x
SELECT title
FROM movies JOIN
stars
ON movies.id = stars.movie_id JOIN
people ON stars.person_id = people.id
WHERE
this is what I got so far…
Advertisement
Answer
I would recommend moving the where clause into a query from one of the tables as it will be more efficient. Suppose your people
table has a field called name
then you could do a subquery like so:
SELECT stars.movie_id, people.name
FROM stars
JOIN (SELECT id, name FROM people WHERE name="Johnny Depp") AS people
ON people.id = stars.people_id
This gives all Johnny Depp movies, a similar query gives all Helena Bonham Carter movies. Now you can intersect the two queries:
SELECT stars.movie_id, people.name
FROM stars
JOIN (SELECT id, name FROM people WHERE name="Johnny Depp") AS people
ON people.id = stars.people_id
WHERE movie_id IN (SELECT stars.movie_id, people.name
FROM stars
JOIN (SELECT id, name FROM people WHERE name="Helena Bonham Carter") AS people
ON people.id = stars.people_id)
This gives all movies starring both. Now intersect this with your original query