Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.018 c
6-80074
__boolean
2003-12-17 10:44
2004.02.25
NetBios


8-80027
AAA111
2003-10-23 21:16
2004.02.25
Печать на принтер


3-79575
werq
2004-01-29 13:10
2004.02.25
Мастаки, какой есть бесплатный компонент по сохранению в DBF?


3-79628
Enigma
2004-02-01 14:41
2004.02.25
DBGrid


1-79813
siriusP
2004-02-10 19:22
2004.02.25
Как вставить в ImageList прозрачную картинку?




   Наверх