![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Next [D7]
Шакал © (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 это если иможно сделать, то очень мучительно