Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.063 c
14-1079518420
ИМХО
2004-03-17 13:13
2004.04.11
"Зимние Олимпийские виды спорта"


1-1082522563
CodVip
2004-04-21 08:42
2004.04.11
Не могу установить компонент


3-1081502392
stud
2004-04-09 13:19
2004.04.11
вопрос по ibdataset


3-1081767131
innok
2004-04-12 14:52
2004.04.11
access через Ado


1-1079995716
Step[B.M.]
2004-03-23 01:48
2004.04.11
Не получается сграбить в Bitmap визуальный компонент





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский