![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Нужна помощь в Селекте [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
Удачи!