Matching a value with every element of a set of values - Postgresql I'm new in Postgres and I can't achieve what I'm trying to do.
I have a list of films in a Films table

ID_FILM    FILM NAME
1          Terminator
2          Forrest Gump
3          Nueve reinas


A Country table

ID_COUNTRY  COUNTRY
1           ARGENTINA
2           ENGLAND
3           USA
4           FRANCE


Finally, I have a table that contains in which countries the film was projected

ID_FILM     ID_COUNTRY
1           2
2           4
3           1
3           2
3           3
3           4


As you can see, the film Nueve Reinas (3) was projected in all countries (1, 2, 3, 4).
Well, that's what I'm trying to show. I'm trying to show the films projected in every country.
What I got was:

SELECT a.name FROM film a
JOIN film_country b ON a.id_film = b.id_film
WHERE b.id_country = ALL (SELECT id_country FROM country)


But this isn't quite working.
This kind of query is called a relational division, where you "divide" film_country by country to obtain a "quotient" that represents a number of films, and then filter out on this number.

The canonical way to write it would be:

SELECT name FROM film JOIN
  (SELECT id_film FROM film_country
   GROUP BY id_film
   HAVING count(*)=(select count(*) from country)
  ) s
ON (film.id_film=s.id_film);