Are the number of languages that can be entered limited? If they are, instead of having 3 tables, you could have only one. For example:
CREATE TABLE proficiencies (
id MEDIUMINT(5) unsigned NOT NULL auto_increment,
name VARCHAR(32) NOT NULL default '',
langs SET('english', 'spanish', 'portuguese', 'french', 'japanese', 'chinese') default NULL,
PRIMARY KEY (id)
) TYPE=MyISAM;
When you enter data, do it something like:
INSERT INTO proficiencies
VALUES('', 'steadyguy', 'english, japanese, portuguese, chinese, french');
Since you know the set of languages a user can know, you can also SELECT data with something like:
SELECT id, name
FROM proficiencies
WHERE lang='english';
To get all people who speak English, or
SELECT id, name
FROM proficiencies
WHERE lang!='spanish';
To get all people who don't speak Spanish.
However ... you might want to let people enter an extra language or two that is not on the list (you can't predict them all , and SET columns can only take 64 values.) So, you could add an 'other' column (or two, or three) ... then search accordingly.
Personally, I know it's not a direct answer to your question, but ... I think this is an easier approach. My 2cents.