Поскольку вы выполняете прямые внутренние объединения, в наборе результатов вы получите только дублированные записи, если во входных таблицах есть дублированные записи.
SELECT FIRST 100 e.email_id, e.location_id, e.email, l.location_type, p.salutation,
p.fname, p.lname
FROM email AS e
JOIN location AS l ON e.location_id = l.location_id
JOIN person AS p ON l.per_id = p.per_id
Наиболее вероятное место возникновения проблем - таблица «location». Вы можете установить это с помощью запроса, такого как:
SELECT location_id, per_id, COUNT(*)
FROM location
GROUP BY location_id, per_id
HAVING COUNT(*) > 1;
Если это возвращает какие-либо данные, то у вас есть указатель на то, где проблема. Затем вы должны изучить, почему у вас нет уникального ограничения на комбинацию location_id, per_id.