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

Вниз

Дубликаты   Найти похожие ветки 

 
Kirill ©   (2004-07-17 16:40) [0]

Как получить записи в таблице
1 ID
2 NAME
только те, которые с одинаковым NAME.
Различаться могут в регистре


 
P.N.P. ©   (2004-07-17 16:57) [1]

select distinct UPPER(name) from MyTable,
но, если учесть, что UPPER работает только с
буржуйскими буквами - выход один - использовать
UDF, например RFunc. Или самому написать.


 
Kirill ©   (2004-07-17 17:12) [2]


> select distinct UPPER(name) from MyTable

Это уберет повторы. Или я не прав?
Мне нужны только повторы.


 
P.N.P. ©   (2004-07-17 17:18) [3]

Если нужны только дубликаты - то
select UPPER(name) from MyTable
   group by UPPER(name)
   having count (UPPER(name)) > 1


 
P.N.P. ©   (2004-07-17 17:21) [4]

Первый вариант выберет без ненужных повторов ВСЕ записи,
второй - выберет в единственном экземпляре только те, где
есть повторы


 
Kirill ©   (2004-07-17 17:33) [5]

EMS IB/FB Manager выдает ошибку

fmSQLEditor.Query:
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause).


 
P.N.P. ©   (2004-07-17 17:36) [6]

Возможно у тебя не все выбираемые поля занесены в group by.
Покажи текст запроса


 
Kirill ©   (2004-07-17 17:41) [7]


> Возможно у тебя не все выбираемые поля занесены в group
> by.
> Покажи текст запроса


select id, name from tbluser
group by upper(name)
having count(upper(name)) > 1


 
Sergey Masloff   (2004-07-17 17:48) [8]

А с каких пор IB6 научился GroupBy по функциям делать?


 
P.N.P. ©   (2004-07-17 17:49) [9]

select id, name from tbluser
group by id,upper(name)
having count(upper(name)) > 1

но, если id- содержит уникальные значения, то ничего не получится.

Что бы выбрать в таком случае еще и id - придется сделать процедуру
типа


CREATE PROCEDURE NEW_PROCEDURE
RETURNS (
   ID INTEGER,
   NAME VARCHAR(100))
AS
begin
for
select RUPPER(name) from tbluser
   group by RUPPER(name)
   having count (RUPPER(name)) > 1
into :NAME do
begin
select  MIN(id) from tbluserwhere RUPPER(tbluser.name)=:NAME into :ID;
 suspend;
end
end


 
Kirill ©   (2004-07-17 18:14) [10]

Большое спасибо за советы. Вот что я уе сам написал по предыдущему сообщению:

select id, name from tbluser
where name in (select name from tbluser
group by upper(user)
having count (upper(user)) > 1)
order by user, id



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

Форум: "Базы";
Текущий архив: 2004.08.15;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 1.619 c
1-1091250542
А.Иванов
2004-07-31 09:09
2004.08.15
D7 и WinXp


1-1091008645
Labert
2004-07-28 13:57
2004.08.15
TCriticalSection - вопрос чайника


1-1091086633
BillyJeans
2004-07-29 11:37
2004.08.15
Свойство Visible у TForm


14-1091005132
ИМХО
2004-07-28 12:58
2004.08.15
"Большая перемена"


14-1091193438
dtm
2004-07-30 17:17
2004.08.15
А книжечку по SQL Server 2К присоветуйте, а?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский