Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Нужна помощь в Селекте [D6, MSSQL]


dim- ©   (2003-12-01 11:18:00) 

Есть таблица id,name,adres,phone
в ней данные (гдето 360000 записей), но проблема что у нескольких фамилий может быть один телефон (живут в одной квартире), необходимо получить селект содержащий записи куда попадут только одна фамилия из тех телефонов т.е.
1 Иванов И.И. улица 65-45-66
2 Иванов С.И. улица 65-45-66
3 Иванов М.И. улица 65-45-66
а надо чтобы попал только один
1 Иванов И.И. улица 65-45-66


dim-   (2003-12-01 11:58:00) [1]

Спасибо всем, воспользовался советом sniknik ©


asp   (2003-12-01 11:46:00) [2]

dim- © (01.12.03 11:18)>
SELECT T1.ID, T1.NAME, T1.PHONE
FROM (SELECT T.PHONE, MIN(T.ID) AS MIN_ID
FROM TABLE T
GROUP BY T.PHONE) AS Q1(PHONE, MIN_ID)
INNER JOIN TABLE AS T1 ON (T1.ID = Q1.ID)


sniknik   (2003-12-01 11:44:00) [3]

возможнотак будет быстрее
SELECT * FROM tab1 WHERE id IN (SELECT Min(id) FROM tab1 GROUP BY phone)
чем полное обьеденение само с собой делать

(есть id и скорее всего это автоинкремент)


MOA   (2003-12-01 11:28:00) [4]

Конечно, не
GROUP BY t1.Adres, t1.Phone
а
GROUP BY t.Adres, t.Phone


MOA   (2003-12-01 11:27:00) [5]

Вот, например (не проверял)
SELECT t.Name, t.Adres, t.Phone FROM tab1 t
INNER JOIN (SELECT TOP 1 Name, adres, phone FROM tab1 t1 WHERE (t1.Adres=t.Adres) AND (t1.phone=t.phone)) t2 ON (t2.adres=t.adres) AND (t2.phone=t.phone)

или

SELECT MIN(t.Name), t.Adres, t.Phone FROM tab1 t
GROUP BY t1.Adres, t1.Phone

Удачи!


Наверх

Титульная страница Поиск, карта сайта Написать письмо