![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Дубликаты [D7, IB6.x]
Kirill © (2004-07-17 16:40:00)Как получить записи в таблице
1 ID
2 NAME
только те, которые с одинаковым NAME.
Различаться могут в регистре
Kirill (2004-07-17 18:14:00) [1]Большое спасибо за советы. Вот что я уе сам написал по предыдущему сообщению:
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
P.N.P. (2004-07-17 17:49:00) [2]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
Sergey Masloff (2004-07-17 17:48:00) [3]А с каких пор IB6 научился GroupBy по функциям делать?
Kirill (2004-07-17 17:41:00) [4]
> Возможно у тебя не все выбираемые поля занесены в group
> by.
> Покажи текст запроса
select id, name from tbluser
group by upper(name)
having count(upper(name)) > 1
P.N.P. (2004-07-17 17:36:00) [5]Возможно у тебя не все выбираемые поля занесены в group by.
Покажи текст запроса
Kirill (2004-07-17 17:33:00) [6]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:21:00) [7]Первый вариант выберет без ненужных повторов ВСЕ записи,
второй - выберет в единственном экземпляре только те, где
есть повторы
P.N.P. (2004-07-17 17:18:00) [8]Если нужны только дубликаты - то
select UPPER(name) from MyTable
group by UPPER(name)
having count (UPPER(name)) > 1
Kirill (2004-07-17 17:12:00) [9]
> select distinct UPPER(name) from MyTable
Это уберет повторы. Или я не прав?
Мне нужны только повторы.
P.N.P. (2004-07-17 16:57:00) [10]select distinct UPPER(name) from MyTable,
но, если учесть, что UPPER работает только с
буржуйскими буквами - выход один - использовать
UDF, например RFunc. Или самому написать.