It works fine without the foreign key. You do not need a foreign key / primary key relationship to JOIN tables in a query.
The purpose of primary and foreign keys is to instruct the database engine itself to perform the following tests, and to reject data that fails these tests:
For a column declared as a primary key, every row must have a non-NULL value and that value must be unique across all rows in the table. (If you declare several columns to collectively form the primary key, then all columns must contain non-NULL values and the combination of values must be unique among all rows).
For a column declared as a foreign key, if a value is given for a row (foreign key columns can contain NULL values if not otherwise specified) then that value must exist in the linked primary key column.
For a column declared as a primary key, if you attempt to delete the row or change the primary key value, it must be true that no foreign key columns linked to that primary key contain that value.
It's a little more elaborate (methods exist to handle primary key updates by cascading the changes to foreign key tables, for instance), but that's the gist. PK/FK are there to get the database to do some of the integrity checking for you, and to guarantee that the relationships will always be valid.