One of the problems is the performance - such a DISTINCT cause sorting all the fields in SELECT list and removing all (lName+fName) duplicates. Note, that it could be number of fields including lengthy ones, like a TEXT or String(2000) - so sorting out such a data may take a lot of time and requires more memory.

Another problem with such a query is the possibility of removing unintended rows - e.g. one of the “John Doe” person was wrongfully removed (pay attention that we have two different persons named “John Doe”). In other words “DISTINCT” is about to remove value-duplicates.

MS Access offers own additional keyword - DISTINCTROW, which can be used in place of DISTINCT. This keeps resulting rows which have identical values, but come from different records from collapsing into a single row. With DISTINCTROW they don't have to include the key in the output.

Valentina offers another way based on grouping by “key”:

SELECT FIRST(fName), FIRST(lName)
FROM Person JOIN Phone ON Person.id=Phone.person_id
GROUP BY Person.RecID;

fName

lName

John

Doe

Ivan

Ivanov

John

Doe

Sure, you can use your own primary key like id field:

SELECT FIRST(fName), FIRST(lName)
FROM Person JOIN Phone ON Person.id=Phone.person_id
GROUP BY Person.id;

but grouping by RecID much more effective and you should prefer this way.