Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];

Вниз

запрос 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.028 c
1-80011
Yanis
2004-02-10 00:17
2004.02.25
Stream ы


1-79819
kirilln
2004-02-11 10:25
2004.02.25
помогите с осями в TChart


1-79894
Vag
2004-02-13 22:10
2004.02.25
Не закрывабшася программа?


1-79785
malkolinge
2004-02-11 17:32
2004.02.25
Редактор компонента для TActionList


14-80228
tvm
2004-02-04 23:28
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский