|
|
|
| Есть таблица
fam | im | ot
---------------------------------------
Иванов | Иван | Петрович
Иванов | Степан | Сидорович
Петров | Петр | Петрович
Кирюхин | Виктор | Иванович
Кирюхин | Иван | Кузьмич
----------------------------------------
| Так вот нужно одним SQL запросом получить результат
fam | im | ot
---------------------------------------
Иванов | Иван | Петрович
Иванов | Степан | Сидорович
Кирюхин | Виктор | Иванович
Кирюхин | Иван | Кузьмич
----------------------------------------
|
То есть выбрать те записи в которых фамилии дублируются (больше чем одна), а вот Петрова не показывать потому что он один в таблице. | |
|
|
|
|
|
|
|
для: ExtraBrain
(27.10.2009 в 11:44)
| | Для решения задачи в таблице сильно не хватает первичного ключа.
Не то что бы до зарезу, но напрягает. | |
|
|
|
|
|
|
|
для: Trianon
(27.10.2009 в 12:49)
| | Ну пусть будет ключ. Как это можно сделать с ключом? | |
|
|
|
|
|
|
|
для: ExtraBrain
(28.10.2009 в 23:30)
| | Так или примерно так:
SELECT t1.*
FROM tbl t1
LEFT JOIN tbl t2 ON t1.fam = t.fam AND t1.id <> t2.id
ORDER BY t1.fam
|
| |
|
|
|
|
|
|
|
для: Trianon
(29.10.2009 в 02:12)
| | Те строки, которые не нужно учитывать, в условие WHERE нужно поставить
SELECT t1. *
FROM tbl t1
LEFT JOIN tbl t2 ON t1.fam = t2.fam
WHERE t1.id <> t2.id
ORDER BY t1.fam
|
| |
|
|
|
|
|
|
|
для: Лена
(29.10.2009 в 13:50)
| | Ага. | |
|
|
|
|
|
|
|
для: Лена
(29.10.2009 в 13:50)
| | Всем спасибо. Проверил на PgSQL - всё работает. Проверю еще на MySQL, но думаю, что тоже должно работать. | |
|
|
|