Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.11;
Скачать: CL | DM;

Вниз

SQL-запросик   Найти похожие ветки 

 
Sir Kik ©   (2004-03-09 18:28) [0]

Задачка: дана таблица (id, date, time, id_user). Заносятся записи входов в базу юзверей-когда и во сколько. Вопрос: требуется найти для каждого юзверя id последнего входа (именно id, а не число, время). В день м.б. и несколько входов.


 
Соловьев ©   (2004-03-09 18:31) [1]

select id_user, max(id)
from table
group by id_user


 
ZrenBy ©   (2004-03-09 18:40) [2]

select
id_user,
id_fmax=substring(max(convert(char(23),date+time,120)+convert(char(10),id)),24,10)
from table group by id_user


 
Fay ©   (2004-03-10 07:59) [3]

2ZrenBy ©   (09.03.04 18:40) [2]
IB не очень хорошо поддерживает T-SQL. 8)


 
Johnmen ©   (2004-03-10 09:16) [4]

Это зависит от определения "последнего входа"


 
Жук ©   (2004-03-10 09:27) [5]


> Johnmen ©   (10.03.04 09:16) [4]
> Это зависит от определения "последнего входа"

Главное, чтобы юзверь вошёл, а уж последним его вход мы сами сделаем :-)


 
ZrenBy ©   (2004-03-10 09:57) [6]

>>Fay ©   (10.03.04 07:59) [3]

Дан прынцып


 
Fay ©   (2004-03-10 10:03) [7]

А чё за прынцып такой - искать max по строке?


 
ZrenBy ©   (2004-03-10 10:07) [8]

>>искать max по строке?

Это уже офф.

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


 
Sir Kik ©   (2004-03-10 17:05) [9]

В IB выглядит так:

select
id_user,
CAST((copy(max(CAST(date + time AS VARCHAR(24)) || CAST(id AS VARCHAR(10))), 25, 10)) AS int) AS XXX
from table YYY group by id_user

где copy - собственная ф-ция dll, бо плохо у IB со строками

Принцип ZrenBy здесь полностью проходит. Особая ему благодарность.


 
Johnmen ©   (2004-03-10 17:21) [10]

Можно ещё штаны через голову снимать...:) Но это чудачество, как минимум...

SELECT T1.id, T1.date, T1.time, T1.id_user
FROM Table T1
WHERE T1.date+T1.time=(SELECT MAX(T2.date+T2.time)
                      FROM Table T2
                      WHERE T1.id_user=T2.id_user)


 
ZrenBy ©   (2004-03-11 11:43) [11]

Так.
Попробовал штаны снять через голову, вот что получилось.


set nocount on
use pubs
go
if(object_id("t") is not null)drop table t
create table t(id int identity(1,1),date datetime,time datetime,id_user char(1))
go

insert into t(date,time,id_user)
select
 dateadd(dd,N+error+ascii(description),"18000101"),
 dateadd(ss,floor(rand()*80000),"00:00:00"),
 substring(description,1,1)
from master..sysmessages join (
select N=100*C+10*B+A from
(select A=0 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9)a,
(select B=0 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9)b,
(select C=0 union select 1 union select 2 union select 3)c
)Q on 1=1
go

declare @J datetime set @J=getdate()
select T1.id_user,T1.id
from t T1
where T1.date+T1.time=(select max(T2.date+T2.time)
                     from t T2
                     where T1.id_user=T2.id_user)
print "Johnmen:" print datediff(ms,@J,getdate())
go

declare @Z datetime set @Z=getdate()
select
id_user,
id_fmax=convert(int,substring(max(convert(binary(8),date+time)+convert(binary(4),id)),9,4))
from t group by id_user
print "ZrenBy:" print datediff(ms,@Z,getdate())
go


PS:
Все, что можно сказать по этому поводу, я прекрасно знаю.
Это чудачества у меня такие :)


 
Johnmen ©   (2004-03-11 12:00) [12]

>ZrenBy ©   (11.03.04 11:43) [11]

Просто я забыл указать, что мой пост предназначен автору, а не тебе...:)

А если ты намекаешь на время выполнения, то можно развернуть целую философскую дискуссию на эту тему,на тему извращенческих конструкций, на тему переносимости кода, на тему стандартности и универсальности и т.п.
Но не стОит, право...:)



Страницы: 1 вся ветка

Текущий архив: 2004.04.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.044 c
6-1076148497
Iks
2004-02-07 13:08
2004.04.11
SMTP


4-1075882378
turonix
2004-02-04 11:12
2004.04.11
Как отловить нажатие клавиши Enter


11-1059567907
Aser2k
2003-07-30 16:25
2004.04.11
А где в KOL какой-нибудь StringGrid или что-то вроде ???


1-1082454748
avgur
2004-04-20 13:52
2004.04.11
Ввод пароля для основной программы


1-1082462076
msgipss
2004-04-20 15:54
2004.04.11
Для чего нужен TEvent из модуля SyncObjs