(P2.PR_NAME=P1.PR_NAME) AND (P2.PR_CODE<>P1.PR_CODE)
ORDER BY 1
Если в исходной таблице есть больше чем два человек с одной фамилией мы получим дублирование строк, поэтому используем DISTINCT для исключения дубликатов. Результат упорядочиваем по вычисляемому полю ФИО, чтобы сразу увидеть группы однофамильцев.
Листинг 22. Результат самообъединения таблицы PERSON с самой собой - список всех однофамильцев.
ФИО
Дата рождения
Блинова Людмила Александровна
28.08.1957
Блинова Ольга Владимировна
Блинова Светлана Александровна
05.05.1980
Васильева Марианна Юрьевна
Васильева Наталья Васильевна
09.11.1980
Зеленина Екатерина Владимировна
16.12.1977
Зеленина Надежда Александровна
11.12.1965
Зеленина Наталья Александровна
23.09.1990
Зеленина Ольга Викторовна
30.04.1958
Култышева Лиана Валентиновна
22.01.1970
Култышева Наталья Сергеевна
Лобанов Алексей Викторович
18.11.1951
Лобанов Владимир Николаевич
Лядова Надежда Вячеславовна
Лядова Наталья Викторовна
12.01.1973
Некрасова Елена Павловна
08.09.1970
Некрасова Татьяна Николаевна
04.12.1949
Новикова Вера Валерьевна
09.03.1947
Новикова Марина Рафаиловна
30.11.1975
Рожкова Анастасия Сергеевна
Рожкова Оксана Юрьевна
Степанова Ирина Борисовна
Степанова Наталья Алексеевна
09.11.1969
Обратите внимание на то, что в данном случае мы обязаны для таблиц указывать псевдонимы, чтобы точно указывать в операторе, к какой именно таблице относится тот или иной столбец. В нашем случае используются псевдонимы P1, P2. Имея два псевдонима, таблицу можно рассматривать как две разные таблицы.