Форум: "Базы";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];
Внизn первых записей Найти похожие ветки
← →
Narayan © (2004-05-03 04:30) [0]Как выбрать n первых записей в IB.
И можно ли это дело оформить как представление ?
← →
Кщд (2004-05-03 10:37) [1]в FB - select first n
в IB - посредством манипуляций с where
← →
narayan © (2004-05-03 10:39) [2]2 Кщд (03.05.04 10:37) [1]
можно по подробнее про манипуляции
← →
Кщд (2004-05-03 10:44) [3]1. если можно получить ровно 10 записей, сформулировав соответствующее условия в where, то почему бы этого не сделать? :)
2. ещё вариант - хранимая процедура
← →
narayan © (2004-05-03 11:44) [4]2 Кщд (03.05.04 10:44) [3]
кусочек кода всегда лучше длинных объяснений
← →
ss300 © (2004-05-03 12:33) [5]2 narayan
1) добавь в таблице дополнительное поле id
2) напиши триггер, типа автоинкремента для поля id
3) select * from table where id<20;
← →
narayan © (2004-05-03 12:57) [6]2 ss300 © (03.05.04 12:33) [5]
это чушь
← →
Кщд (2004-05-03 15:33) [7]narayan © (03.05.04 12:57) [6]
не грубите и не грубимы будете
narayan © (03.05.04 11:44) [4]
не знаете for select - в доку
знаете - в чем вопрос?
← →
narayan © (2004-05-03 15:39) [8]2 Кщд
1. если можно получить ровно 10 записей, сформулировав соответствующее условия в where, то почему бы этого не сделать? :)
А всё таки, как надо "сформулировать соответствующее условия в where" что бы "получить ровно 10 записей" ??
← →
Anatoly Podgoretsky © (2004-05-03 15:47) [9]narayan © (03.05.04 15:39) [8]
Очень просто, для этого надо иметь пронумерованое без дырок поле и использовать в выборке предикат between
← →
служивый (2004-05-03 15:56) [10]>>Как выбрать n первых записей в IB.
rows n
← →
Johnmen © (2004-05-03 16:35) [11]>служивый (03.05.04 15:56) [10]
Служи дальше. Для тебя дембель ещё далеко...
:)
← →
kaif © (2004-05-03 20:34) [12]Универсальное для любого IB решение:
Предположим имеется таблица mytable
create table mytable(id integer, name varchar(50),
constraint pk_mytable primary key(id));
создаеся хранимая процедура:
create procedure mytable_first_n_select(n integer)
returns(id integer, name varchar(50))
as
begin
for select id, name from mytable
order by id
into :id, :name
do
begin
if n = 0 then
exit;
else
suspend;
n = n - 1;
end
end
Далее делается запрос
select from mytable_first_n_select(10)
Получаешь 10 "первых" записей. Если первыми 10 записями называть первые 10 в наборе, упорядоченном по id.
А зачем это нужно? Если опишете задачу, может быть найдем другие решения. Например, перейти на Firebird и использовать его опцию в select, позволяющую решать эту задачу. Или может проще выбрать все записи, а фетчить только первые N. Это тоже неплохое решение в некоторых случаях. А может быть вообще этот путь неверный. Все от задачи зависит...
← →
kaif © (2004-05-03 20:36) [13]Пардон, в таблице: id integer not null.
И в запросе забыл поля указать:
select * from mytable_first_n_select(10)
← →
narayan © (2004-05-03 23:01) [14]2 kaif
Другое решение не требуется.
Нужно это для http://delphimaster.net/view/3-1083330901/
А так, вообще-то всё это пока под yaffil.
На счёт процедуры - это первое что мне пришло в голову, но я расчитывал что есть стандортные средства.
Поскольку это место в не критичное, можно в принципе, и в программе ограничить кол-во записей.
Ладно. Нет так нет. Всё равно, спасибо.
← →
kaif © (2004-05-04 14:52) [15]select first 10 * from mytable
в Yaffil-е работает. Я только что проверил.
← →
служивый (2004-05-08 18:09) [16]>Johnmen © (03.05.04 16:35) [11]
>Служи дальше. Для тебя дембель ещё далеко...:)
Прошу извинить уважаемый,но на IB 6.5
select * from table rows 10
дает тот результат о котором спрашивал автор
а дембель это хорошо :))
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.029 c