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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.01 c
1-51323
DimChan
2003-10-06 07:03
2003.10.16
Курсор в конец строки


1-51329
COSINUS
2003-10-02 20:00
2003.10.16
Параллельная прокрутка


3-51060
Smashich
2003-09-26 17:35
2003.10.16
Grant


1-51318
WondeRu
2003-10-06 09:29
2003.10.16
Корреляционные функции


1-51301
Zhouck
2003-10-04 13:15
2003.10.16
Можно ли использовать в Delphi формы из C++Builder(с кодом)





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