Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Next [D7]


Страницы:   1 2

Шакал ©   (2008-12-26 12:33:00) 

Здравствуйте!
Подскажите пожалуйста - есть база mdb, в ней один столбик содержит много чисел, требуется при запросе вывести все следующие числа за искомыми....т.е ищем 50 - а в гриде чтобы показало все которые стоят следом....
Так почемуто не проходит:
adoquery.SQL.text:='select * from table where fields=50 next'


AndreyV   (2008-12-29 12:49:00) [1]

> [32] Шакал   (29.12.08 08:35)
> Сори, неверно поставил вопрос, нужно 1 число стоящее за
> искомым....

Ну ты подумай, о чем говоришь. Что нужно и что искомое, и кто за кем стоит.


Шакал   (2008-12-29 08:35:00) [2]


> Как это так "не надо" ?
>
> Быстро же ты, однако, оглобли заворачиваешь - сначала тебе
> подай "все которые стоят следом", а теперь вдруг 54 и 18
> уже не надо, хотя 54 тоже "стоит следом" за 50, как тобой
> показано в [6]

Сори, неверно поставил вопрос, нужно 1 число стоящее за искомым....

Всем спасибо за ответы!!!


palva   (2008-12-26 21:45:00) [3]


> Ну лан...это понятно...добавлю поле с порядковыми номерами.
> ..а выкртнуться то так, как?

Можно так: в таблице t1 два целых поля id - порядковый номер и num, здесь в некоторых строках стоит 50. Если id идут подряд, то в Access работает такой запрос:

select b.num
from t1 a
inner join t1 b on b.id = a.id + 1
where a.num = 50
order by b.id

Если номера идут не подряд, то наверно тоже как-нибудь можно, добавив вложенные запросы. Но не знаю будет ли это работать на Access.


Сергей М.   (2008-12-26 15:52:00) [4]


> не надо


Как это так "не надо" ?

Быстро же ты, однако, оглобли заворачиваешь - сначала тебе подай " всекоторые стоят следом", а теперь вдруг 54 и 18 уже не надо, хотя 54 тоже "стоит следом" за 50, как тобой показано в [6]


MsGuns   (2008-12-26 15:52:00) [5]

Смысл в подобной выборке может быть единственный - если надо получить номера записей, введенных хронологически ПОЗЖЕ указанной. Решается только в единственном случае - если в таблице есть поле счетчика. Тогда запрос будет выглядеть так

Select FNUM from table where ID>(select ID from table where FNUM=:n)


Шакал   (2008-12-26 15:48:00) [6]


>
> > т.е. 54 и 18 не надо?
>
> а этот вопрос так и остался безответным...

не надо


Правильный$Вася   (2008-12-26 15:44:00) [7]


> т.е. 54 и 18 не надо?

а этот вопрос так и остался безответным...


Сергей М.   (2008-12-26 15:38:00) [8]


> в таблице ~30000 строк


И что ?


Сергей М.   (2008-12-26 15:37:00) [9]


> Это выберет строки с порядковыми номера больше 50


"Это" выберет строки с порядковыми номерами больше порядкового номера той строки, где в интересующем тебя поле записано 50


Шакал   (2008-12-26 15:33:00) [10]


> select * from Table where OrderNo > (select OrderNo from
> Table where NumericField = 50)

Это выберет строки с порядковыми номера больше 50... в таблице ~30000 строк...результат совсем не тот...


Сергей М.   (2008-12-26 15:23:00) [11]

select * from Table where OrderNo > (select OrderNo from Table where NumericField = 50)


Шакал   (2008-12-26 15:18:00) [12]


> Т.е. теоретически тот же набор записей, что ты привел, при
> следующем открытии возможно будет с другим порядком записей

Ну лан...это понятно...добавлю поле с порядковыми номерами...а выкртнуться то так, как?


Sergey13   (2008-12-26 15:05:00) [13]

> [20] Шакал   (26.12.08 14:36)

Но ползая под столом ты похоже так и не понял причину своей неудачи.
В обещем случае порядок расположения записей в таблице (вернее в возвращаемом наборе данных) произволен. Т.е. теоретически тот же набор записей, что ты привел, при следующем открытии возможно будет с другим порядком записей. Поэтому опираться на этот "порядок" нельзя. Необходимо иметь строго сортированный, по какому либо полю, набор данных. Вот уже в нем, опираясь на это самое "сортировочное" поле можно делать подобные выкрутасы, как ты хочешь.


Шакал   (2008-12-26 14:36:00) [14]


> Sergey13 ©   (26.12.08 14:24) [19]
>
> > [17] Сергей М. ©   (26.12.08 14:13)
> > а лучше сразу таблицу)..
>
> Чего мелочиться то, ведь
>
> > [0] Шакал   (26.12.08 12:33)
> > есть база mdb
>
> 8-)

под сталом))))))))))))))))))))))))))))))))))))))))))))))))))))))))


Sergey13   (2008-12-26 14:24:00) [15]

> [17] Сергей М. ©   (26.12.08 14:13)
> а лучше сразу таблицу)..

Чего мелочиться то, ведь

> [0] Шакал   (26.12.08 12:33)
> есть база mdb

8-)


Шакал   (2008-12-26 14:16:00) [16]


> Сергей М

:)


Сергей М.   (2008-12-26 14:13:00) [17]


> Удалил все остальное с таблицы


Мдя ..Чем дальше в лес, тем злее дятлы ..

Ну что тебе сказать ?
Удали до кучи еще и это поле, а лучше сразу таблицу).. Нет таблицы - нет проблемы)


Шакал   (2008-12-26 14:08:00) [18]


> тогда средствами SQL это если и можно сделать, то очень мучительно

а чем другим??)))
> Ответить сподобишься или будешь партизанить ?

Удалил все остальное с таблицы..остался один столбик с числами....
> Есть смутное ощущение, что эта прога не имеет смысла в любом
> случае...:)

Возможно ты и прав)))))
Не, на самом деле если очень сложно, то тогда лучше и не земорачиваться...эт я так, для общего развития....


Сергей М.   (2008-12-26 14:04:00) [19]


> другие поля меня не интересуют


А я тебе их и не предлагаю.
Ответить сподобишься или будешь партизанить ?


Правильный$Вася   (2008-12-26 14:04:00) [20]

11
62
50
19
54
50
21
18
Нужно, что бы если запросить 50, выдало 19, 21 и т.д...

т.е. 54 и 18 не надо?
тогда средствами SQL это если иможно сделать, то очень мучительно


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо