-
> nekepka (03.04.08 23:08) [17]
На дату смотрел? 15.07.02
-
Да и FB совсем-совсем не IB. Так что бегом на ibase.ru
-
> На дату смотрел?
Ну тогда это ответ на "...с какой версии.." :)))
-
> ага (03.04.08 23:20) [21]
Да ходил, и не раз... Может плохо ходил... Не будем распыляться: я пока кроме варианта [10] не вижу ничего. Но как удручает вложенный запрос!!!
-
> nekepka (03.04.08 23:20) [22]
>
>
> > На дату смотрел?
> Ну тогда это ответ на "...с какой версии.." :)))
Угу... Счас. Вот как раз большие траблы с IN в FB 1.0 и были. А в статье говорится о IB,
причем неизвестной версии.
-
> nekepka (03.04.08 23:24) [23]
нет ничего плохого во вложенном запросе.
-
> нет ничего плохого во вложенном запросе.
Плохого нет - точно, раз в синтаксисе присутствует, просто думал, может чего не знаю, чего не дочитал, может можно пооптимальнее как-то...
Большое Спасибо всем отозвавшимся!
-
Можно и с помощью запроса SELECT к хранимой процедуре сделать.
На любом IB заработает.
Надеюсь одному VALUE у юзера соотвествует только один ID. Хотя это заработает в любом случае. По сути это эквивалент вложенного запроса.
CREATE PROCEDURE PROCEDURE1
RETURNS(VALUE INTEGER, USERID INTEGER)
AS
BEBIN
FOR SELECT MIN(VALUE),USERID
FROM TABLE1
GROUP BY USER_ID
INTO :VALUE, :USERID
DO BEGIN
FOR SELECT ID FROM TABLE1 WHERE USERID=:USERID AND VALUE=:VALUE
INTO :ID
DO SUSPEND;
END
END
-
Извиняюсь, ID вернуть забыл:
CREATE PROCEDURE PROCEDURE1
RETURNS(ID INTEGER, VALUE INTEGER, USERID INTEGER)
AS
BEBIN
FOR SELECT MIN(VALUE),USERID
FROM TABLE1
GROUP BY USER_ID
INTO :VALUE, :USERID
DO BEGIN
FOR SELECT ID FROM TABLE1 WHERE USERID=:USERID AND VALUE=:VALUE
INTO :ID
DO SUSPEND;
END
END
-
select min(value) as min_value, min(ID) as min_id, UserID
from Table
group by UserID
=))
-
> kaif © (04.04.08 15:41) [28]
Скинь плиз контакты в почту или в аську, у тебя анкета слетела
-
> ага (04.04.08 15:52) [29]
Это про что?
-
> Johnmen © (04.04.08 18:48) [31]
>
>
> > ага (04.04.08 15:52) [29]
>
> Это про что?
>
Это про
> Можно ли одним запросом получить минимальное значение Value
> для каждого UserID, и при этом, в той же записи получить
> значение ID, для которого и было выбрано это минимальное
> Value.
...
> И или хотя бы первую из них, если минимальных для одного
> UserID несколько.
Самый подходящий вариант - [29]
-
> ага (04.04.08 19:11) [32]
> Это про
>> Можно ли одним запросом получить минимальное значение Value
>> для каждого UserID, и при этом, в той же записи получить
>> значение ID, для которого и было выбрано это минимальное
>> Value.
Кхм... Ты серьезно?
-
> Johnmen © (04.04.08 19:14) [33]
А что не так? Автору же по барабану, какой именно ид
> > И или хотя бы первую из них, если минимальных для одного
> > UserID несколько.
-
> ага (04.04.08 19:21) [34]
> А что не так? Автору же по барабану, какой именно ид
Какому такому барабану?
> значение ID, для которого и было выбрано это минимальное Value.
-
> Johnmen © (04.04.08 19:40) [35]
:-)
В таблице 3 поля. Получается, что userid и value попадаются одинаковые, но с разным id.
Если следовать
> > значение ID, для которого и было выбрано это минимальное
> Value.
то мы и выберем все записи с минимальным value но разными id для каждого userid.
Но! Читаем далее:
> > > И или хотя бы первую из них, если минимальных для одного
> > > UserID несколько.
>
Это жжж неспроста :) Так что выбираем min или max id и всех делов.
Ну надо автору поле id в выборке, что поделаешь :-)
-
> ага (04.04.08 19:47) [36]
Бр-р-р... Какая ерунда...
Рассмотри конкретный пример:
ID VALUE USERID
1 44 3
2 55 4
3 66 5
4 99 5
5 88 5
6 66 5
7 66 6
8 11 8
9 22 9
-
пардон, для ID=3 VALUE=77
-
> Johnmen © (04.04.08 20:05) [37]
Проверял. Днем. Сейчас не на чем :)
Но, следуя логике получим
ID VALUE USERID
1 44 3
2 55 4
6 66 5
7 66 6
8 11 8
9 22 9
-- ну как-то так.