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

Вниз

След. запись?   Найти похожие ветки 

 
Deniz ©   (2003-09-25 13:30) [0]

Есть таблица (ID integer(ПК), Fam varchar(), Im varchar(), Ot varchar() ...) есть указатель (ID, и все поля) текущего юзера, как с помощью SQL или ХП найти след. юзера по алфавиту(ФИО)? Если не так объяснил, спрашивайте.


 
Sandman25 ©   (2003-09-25 13:33) [1]

select min(fam||im||ot) from t where fam||im||ot > fam1||im1||ot1


 
Sandman25 ©   (2003-09-25 13:35) [2]

Если нужен id то
select id from t
where fam||im||ot = (select min(fam||im||ot) from t where fam||im||ot > fam1||im1||ot1)


 
Johnmen ©   (2003-09-25 13:36) [3]

Примерная болванка :
SELECT MIN(Fam) FROM Table WHERE Fam>{Fam текущего юзера}


 
Deniz ©   (2003-09-25 14:49) [4]

Спасибо, работает.


 
Deniz ©   (2003-09-25 15:23) [5]

Стоп, не работает если встречаются тезки по трем полям :(


 
Johnmen ©   (2003-09-25 15:35) [6]

>Deniz © (25.09.03 15:23)

Тогда нужен дополнительный критерий "различности" записей тезок.
Он есть в твоей таблице ?


 
Sandman25 ©   (2003-09-25 15:51) [7]

Тезок можно находить специально, упорядочиваем по id
select id from t
where (fam||im||ot = (select min(fam||im||ot) from t where fam||im||ot > fam1||im1||ot1)
and not exists (select * from t where fam||im||ot = fam1||im1||ot1 and id > id1)
or id = (select min(id) from t where fam||im||ot = fam1||im1||ot1 and id > id1)


 
Mike Kouzmine ©   (2003-09-25 16:05) [8]

SELECT ID,MIN(Fam) FROM Table WHERE Fam>{Fam текущего юзера} and ID > (ID текущего юзера)


 
Mike Kouzmine ©   (2003-09-25 16:06) [9]

group by ID
А ID, наверное, <>


 
Sandman25 ©   (2003-09-25 16:20) [10]

[8] Mike Kouzmine © (25.09.03 16:05)

Точно.
select id from t
where (fam||im||ot =
(select min(fam||im||ot)
from t where fam||im||ot >= fam1||im1||ot1
and id > id1)


 
Sandman25 ©   (2003-09-25 16:21) [11]

Хотя нет, [10] Sandman25 © (25.09.03 16:20) неправильно.


 
Johnmen ©   (2003-09-25 17:21) [12]

Если хотим получить следующего от указанного, и у указанного есть полный тезка, которого и хотим получить, то нужен доп.критерий очередности. Если критерий это ID, то достаточно добавить в запрос на поиск MIN еще и ID указанного.
Иначе задача нерешаема...


 
Sandman25 ©   (2003-09-25 17:36) [13]

В-общем, задача решена в [7] :)


 
Deniz ©   (2003-09-26 08:07) [14]

Для FB нашлось решение попроше чем Sandman25 © (25.09.03 15:51) [7], но не для IB5.6:


select first 1 ID, FAM, IM, OT from RAB
where ((FAM || IM || OT = :AFAM || :AIM || :AOT) and (ID > :CURR_ID))
or (FAM || IM || OT > :AFAM || :AIM || :AOT)
order by FAM, IM, OT, ID


Всем спасибо.


 
Sandman25 ©   (2003-09-26 10:25) [15]

Если уж поддерживается first, то можно еще проще :)

select first 1 ID, FAM, IM, OT from RAB
where (FAM || IM || OT >= :AFAM || :AIM || :AOT) and (ID > :CURR_ID)
order by FAM, IM, OT, ID


 
Johnmen ©   (2003-09-26 10:37) [16]

>Sandman25 © (26.09.03 10:25)

Не совсем верно, т.к. Яковлев может иметь ID=1, a Акунин ID=1000
:)


 
Sandman25 ©   (2003-09-26 12:40) [17]

[16] Johnmen © (26.09.03 10:37)

Согласен. Лопухнулся :)



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

Текущий архив: 2003.10.16;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.015 c
1-51196
Alexious
2003-10-03 16:55
2003.10.16
Focus


14-51465
Turin
2003-09-29 13:10
2003.10.16
Delphi - классы, массивы


1-51310
Udjin
2003-10-06 08:42
2003.10.16
Сохранение настроек приложения в потомке TComponent


6-51366
SergP
2003-08-20 01:31
2003.10.16
Вопрос об OnDisconnect в Tclient/serversocket


14-51523
Knight
2003-09-22 11:42
2003.10.16
Какая з/п должна быть у депутата,