![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
sql ; ; ; ;кто на втором месте? [D6, IB6.x]
ddd © (2003-03-07 12:59:00)день добрый.
функция max(field1) возвращает максимальное значение поля field1.
а как можно узнать следующее (второе, третье, n-ое) значение?
ddd (2003-03-07 14:56:00) [1]Соловьев © (07.03.03 14:46)
почему не нравится? нравится. не нравится, когда выбора нет.
Соловьев (2003-03-07 14:46:00) [2]
> ddd (07.03.03 14:45)
а чем тебе ХП не нравится?
ddd (2003-03-07 14:45:00) [3]Соловьев © (07.03.03 14:35)
пока нет.
видишь ли, какая штука (см. пример ddd (07.03.03 14:27)), я думал,можно как-то так:
update table2
set first=(select max(score) from table1 where round=table2.round),
second=(select somefunction(second_max) from table1...),
third=(select somefunction(third_max) from table1...);
а тут выходит, нужно хп присобачить. будем дальше думать.
зы
2 Delirium © (07.03.03 13:01)
а top возвращает n-ое?
может, поискать ib6.5?
Соловьев (2003-03-07 14:35:00) [4]
> Соловьев © (07.03.03 13:19)
2 ddd
ты пробывал пример мой? Там правда еще чуть напильником поработать.
ddd (2003-03-07 14:33:00) [5]чего тут странного?
я отсортировал нд, и хоче найти n-ое значение, отвечающее условию сортировки. мне не хватает min и max- мне нужны промежуточные значения.
блин, ну хоть находи max и обнуляй в цикле!
ddd (2003-03-07 14:27:00) [6]Delirium © (07.03.03 13:01)
у меня ib6.0, функции top нету, а first возвращает первые n значений (в примере- 2).
BorisUK © (07.03.03 13:04)
что ж, мне "вручную" смотреть?
есть (уже получил) нд (несортированный, могу отсортировать). нужно программно определить n-ое значение. собственно, это мой сабж (и ваш совет?!).
применение:
допустим (например), есть таблица1:
player|round|score
1 1 5
2 1 4
3 1 3
1 2 3
2 2 5
3 2 4
...
и таблица2:
round|first|second|third
1
2
3
...
как мне по данным таблицы1 заполнить таблицу2, т. е.:
round|first|second|third
1 1 2 3
2 2 3 1
3 ... ... ...
...
Соловьев (2003-03-07 13:19:00) [7]Вот тут быстренько набросал. Мастера , только не пинать...
Вводишь индекс и тебе выдается значение...
CREATE PROCEDURE GET_VALUE (
INDEXVALUE INTEGER)
RETURNS (
VALUEFIELD INTEGER)
AS
declare variable i integer;
declare variable temp integer;
BEGIN
i=0;
for
select distinct (fied )
from table
order by field
into :temp
do
begin
if (i=:indexValue) then
begin
ValueField =:temp;
SUSPEND;
Exit;
end
else
ValueField =NULL;
i=i+1;
end
SUSPEND;
END
Johnmen (2003-03-07 13:14:00) [8]SELECT MIN(Field1) FROM Table
WHERE Field1>{значение, следующее к которому, надо найти}
Странно это все...:)
Smashich (2003-03-07 13:11:00) [9]2 Delirium © (07.03.03 13:04)
2 Alexandr © (07.03.03 13:05)
звиняюсь - это я сгоряча;)
Smashich (2003-03-07 13:11:00) [10]2 Alexandr © (07.03.03 13:05)
2 Smashich © (07.03.03 13:02)
звиняюсь - сгоряча;)
Alexandr (2003-03-07 13:05:00) [11]почему нету?
есть в Ib6.5 именно top.
учите мат.часть.
BorisUK (2003-03-07 13:04:00) [12]Получи набор данных, отсортированный по этому полю и смори какое на каком месте от максимального...
А вообще что за задача такая... где область реального применения этого вопроса.
Delirium (2003-03-07 13:04:00) [13]> Smashich ©
Однако :)
Smashich (2003-03-07 13:02:00) [14]2 Delirium © (07.03.03 13:01)
функции TOP нету в IB! в FireBird(не в IB) eсть First...
stone (2003-03-07 13:02:00) [15]select distinct field1 from table1
order by field1
first=min
last=max
Delirium (2003-03-07 13:01:00) [16]
select top 2 MyField from MyTable order by MyField desc
Соловьев (2003-03-07 13:00:00) [17]ХП я думаю можно.