Главная страница
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.025 c
1-1090987927
R
2004-07-28 08:12
2004.08.15
Маска папки


3-1090486803
ZedeS
2004-07-22 13:00
2004.08.15
Номер строки в DBGrid


14-1091101393
GrigP
2004-07-29 15:43
2004.08.15
Расположение папок с данными программы


3-1090496317
stud
2004-07-22 15:38
2004.08.15
вопрос по dbimage


11-1078154025
ctapik
2004-03-01 18:13
2004.08.15
Занимаемая память программы (Task manager)