![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SQL запрос: поиск двойников [D6, MS Access]
Deedlit © (2003-04-27 13:46:00)Привет всем. :)
Вопрос... есть локальная БД медицинского учреждения, хранящая список пациентов, за, скажем, последний год. Нужно отфильтровать людей, имеющих одинаковые имена, даты рождения и пол. Кто-нибудь пытался это сделать без помощи тупого перебора? Оператор ведь уснет... :( С другой стороны, я никак не могу составить SQL запрос.
GLUKAS (2003-04-28 14:15:00) [1]Select name, sec_name, last_name, sex
from table1 t
where (select count(*) from table1 where name=t.name and sec_name=t.secname and last_name=t.lastname and sex=t.sex)>1;
Во че на вскидку получилось..... 8)
Anatoly Podgoretsky (2003-04-28 11:19:00) [2]DrPass © (27.04.03 16:40)
Зачем в два шага? Вот в один АлексейК (28.04.03 04:31) и соответствует SQL89 не говоря уже про SQL92
АлексейК (2003-04-28 04:31:00) [3]select name, sec_name, last_name, sex from [table_name]
group by name, sec_name, last_name, sex, count(name) as cnt
having count(name)>1
Таким образом можно вывести всех двойников, тройников и т.д., группируя по нескольким полям или по одному.
DrPass (2003-04-27 16:40:00) [4]В два шага: во-первых,
select name, sec_name, last_name, sex, count(*) as cnt from [table_name] group by name, sec_name, last_name, sex
во-вторых, выбираешь только те, где cnt>1
Тих (2003-04-27 15:03:00) [5]select distinct name, sec_name, last_name, sex from [table_name]?