Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.15;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.035 c
1-1091342370
DeMoN_Astra
2004-08-01 10:39
2004.08.15
звук в TMenu


14-1091284985
Водитель трамвая
2004-07-31 18:43
2004.08.15
Хочу убить свой винт с почестями. Как это сделать?


4-1088851695
BBoost
2004-07-03 14:48
2004.08.15
System sound


14-1090933308
UserCry
2004-07-27 17:01
2004.08.15
Как защититься от знакомого?


1-1091091662
tria
2004-07-29 13:01
2004.08.15
Как вызвать виртуальный перекрытый метод предка?