Главная страница
    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.46 MB
Время: 0.034 c
3-79576
ИМХО
2004-01-29 06:53
2004.02.25
Кто работал с TDBF


1-79905
Khabibulin
2004-02-13 21:50
2004.02.25
Приоритет


1-79782
MadGhost
2004-02-10 23:15
2004.02.25
Че та я не пойму с TMemoryStream


14-80241
Nick_Omsk
2004-02-04 18:55
2004.02.25
Про TVicHW32


14-80289
тихий вовочка
2004-02-05 07:34
2004.02.25
Как давно вы занимались креативом?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский