Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.25;
Скачать: CL | DM;

Вниз

запрос SQL   Найти похожие ветки 

 
Merry   (2004-02-02 13:05) [0]

помогите, пожалуйста составить запрос, если это можно, который бы из таблицы выбирал только записи с повторяющимися значениями по полям Field1, Field2, т.е. двойников именно по некоторым полям, но не по всем. Пример:
Field1 Field2 Field3
1 Иванов 12 1
2 Петров 1 1
3 Иванов 1 1
4 Иванов 12 1
5 Иванов 6 1
6 Петров 1 1
В данном случае запрос должен брать записи 1,4 и 2, 6.


 
Sandman25 ©   (2004-02-02 13:12) [1]

select f1, f2, f3
from t
group by f1, f2, f3
having count(*) > 1
либо
select f1, f2, f3
from t t1
where exists
(select 1
from t
where t.f1 = f1
and t.f2 = f2
and t.f3 = f3
)
Смотря, что надо получить...


 
Merry   (2004-02-02 13:28) [2]

> Sandman25 © (02.02.04 13:12) [1]
> having count(*) > 1
По-моему это будет сравнивать все поля в записи, а мне нужно только по двум.


 
Sandman25 ©   (2004-02-02 13:32) [3]

Тогда второй вариант.


 
Merry   (2004-02-02 13:48) [4]

> Sandman25 © (02.02.04 13:12) [1]
> from t t1
Относительно второго запроса: А что это за таблица tt1 и что означает > select 1?


 
Sandman25 ©   (2004-02-02 13:52) [5]

t t1 - эта та же самая таблица t, которая в данном подзапросе получает алиас (псевдоним) t1, чтобы можно было ее отличать от t из главного запроса. Для каждой строчки из t эта же таблица t просматривается еще раз, и сравнивается с текущей строчкой из t. Вместо select 1 можно написать что угодно (например, select * или select field1)- exists проверяет только наличие результата.
Иначе говоря, получается нечто типа
for I := 0 to N do
for J := 0 to N
if (T[I].field1 = T[J].field1) and ..
then
break;

Кстати, я ошибся. Надо написать
select ...
from t t1
where 1<
(select count(*)
from t
where t.f1 = f1
and t.f2 = f2
and t.f3 = f3
)


 
Sandman25 ©   (2004-02-02 13:54) [6]

Упс, опять.
select ...
from t t1
where 1<
(select count(*)
from t
where t1.f1 = f1
and t1.f2 = f2
and t1.f3 = f3
)


 
Merry   (2004-02-02 13:57) [7]

>Sandman25 © (02.02.04 13:52) [5]
Спасибо огромное, попробую.
А это будет понятно:смена псевдонима таблицы, что t и t1 одно и то же? т.е. там видимо не хватает точки. Правильно так: from t.t1, поэтому то я сразу и не поняла о чем речь.


 
Merry   (2004-02-02 14:02) [8]

Вообще-то точки не надо. Я не права.



Страницы: 1 вся ветка

Текущий архив: 2004.02.25;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.019 c
1-80009
-=Zerg=-
2004-02-12 10:42
2004.02.25
Как вернуть курсор?


1-79701
kentavr
2004-02-12 20:29
2004.02.25
EXE


1-79880
Тфьу
2004-02-10 11:29
2004.02.25
Как создать свою кнопку в тулбаре виндоуса (Не трее, а тулбаре!)


14-80119
Я хороший ;)
2004-02-02 19:09
2004.02.25
Подскажите ссылку


3-79556
Zilog
2004-01-29 13:59
2004.02.25
Query. Просмотр результатов...