Главная страница
    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.033 c
7-80324
big_bugzy
2003-12-04 14:53
2004.02.25
Как получить список всех DialUp соеденений которые есть на компе?


14-80140
Goida
2004-01-26 00:05
2004.02.25
Какие еще есть королевства?


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


1-79973
Delph
2004-02-12 16:46
2004.02.25
String to Data


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