Вернуться   Форум программистов > Форум Базы данных > Форум SQL Server

SQL Server

Программирование MS SQL Server

Ответ
 
Старый 31.07.2007, 22:07   #1
LdEsT
Новичок
 
Регистрация: 25.10.2006
Сообщений: 7
LdEsT пока не определено
По умолчанию Может будут у кого умные мысли по этому поводу...?

Задача следущая:
есть табличка статистики. в ней есть поле типа действия, даты и времени, когда данное действие было совершено..Как выбрать из неё все поля со значением типа действия = 1 и предшествующим действием?
т.е. к примеру есть событие 22/11/2005 ( пользователь с айдишником 32 что-либо сделал)и тип действия равен , к примеру, 5
и есть событие 24/11/2005 ( пользователь с айдишником 32 что-либо сделал) с типом 1... между этими записями может быть всё, что угодно...
как заставить sql выдать только эти 2 строки и нничего более?
Может кто-нибудь подскажет, как это сделать одним запросом?
LdEsT вне форума  
Старый 31.07.2007, 22:15   #2
bazile
Местный
 
Регистрация: 05.01.2001
Сообщений: 6,924
bazile пока не определено
По умолчанию RE: Может будут у кого умные мысли по этому поводу...?

Отбор по ID юзера не подходит? Вроде SELECT * FROM stat WHERE iUser_ID=32 ORDER BY [Date].
bazile вне форума  
Старый 01.08.2007, 14:24   #3
LdEsT
Новичок
 
Регистрация: 25.10.2006
Сообщений: 7
LdEsT пока не определено
По умолчанию RE: Может будут у кого умные мысли по этому поводу...?

в этом случае выберутся все события, а мне нужны только с айди 1 и событие перед оным...
LdEsT вне форума  
Старый 01.08.2007, 15:04   #4
slamer
Местный
 
Регистрация: 19.05.2004
Сообщений: 233
slamer пока не определено
По умолчанию RE: Может будут у кого умные мысли по этому поводу...?

Можно попробовать так:
Код
1
2
3
4
5
6
7
8
 
SELECT TOP 2 (*) 
FROM    stat 
WHERE  ( iUser_ID = 32 )
            and
           ( [Date] <= 'моядата' )
ORDER BY [Date] Desc
 
slamer вне форума  
Старый 01.08.2007, 15:28   #5
LdEsT
Новичок
 
Регистрация: 25.10.2006
Сообщений: 7
LdEsT пока не определено
По умолчанию RE: Может будут у кого умные мысли по этому поводу...?

имеет право на существование, но всё равно не то...
ведь записей может быть много...допустим 11/11/2007 пользователь зашёл...т.е. ид события 1, потом что-то поделал и вышел 12/11/2007 грубо говоря....потом зашёл 15/11/2007....
и надо выбрать какраз-таки все входы и события, им предшествующие
LdEsT вне форума  
Старый 01.08.2007, 17:06   #6
bazile
Местный
 
Регистрация: 05.01.2001
Сообщений: 6,924
bazile пока не определено
По умолчанию RE: Может будут у кого умные мысли по этому поводу...?

Не уверен что это лучшее решение, но вроде работает:
create table #t1
(
[id] int primary key identity(1,1),
iEvent_ID int not null,
iUser_ID int not null,
dtWhen datetime NOT NULL,
)
insert into #t1 values (3, 32, '20051125')
insert into #t1 values (1, 32, '20051124')
insert into #t1 values (4, 31, '20051121')
insert into #t1 values (5, 32, '20051122')
-- Запрос
select * from #t1
where [id] = (SELECT TOP 1 [id] FROM #t1 WHERE iUser_ID=32 AND iEvent_ID=1 ORDER BY dtWhen DESC)
or [id] = (SELECT TOP 1 [id] FROM #t1 WHERE iUser_ID=32 AND dtWhen<(SELECT TOP 1 dtWhen FROM #t1 WHERE iUser_ID=32 AND iEvent_ID=1 ORDER BY dtWhen DESC))
----------------
drop table #t1
bazile вне форума  
Старый 02.08.2007, 20:57   #7
LdEsT
Новичок
 
Регистрация: 25.10.2006
Сообщений: 7
LdEsT пока не определено
По умолчанию RE: Может будут у кого умные мысли по этому поводу...?

спасибо за советы всем) но решил сделать проще)
создать темповую табличку и заполнить её с помощью курсора)
т.е. ставить у всех полей с айди эвента = 1 курсор, и записывать его и предыдущее значение в темп табличку) в итоге результат оказался таким, каким нужен был)
LdEsT вне форума  
Ads
Ответ
Опции темы

Похожие темы
Тема Автор
Как замедлить рост log - файла БД MS SQL Server?
Какими настройками можно замедлить рост log - файла БД MS SQL Server?
AvnAvn
SQL Server Подсчет количества вхождений слова в текст
Привет Всем! Есть такая задача: Необходимо реализовать статистику вхождения каких-то слов в тексте. Т.е. нужно чтобы осуществлялся в таблице полнотекстный поиск заданного текста (слова) и...
summer_girl84
экзамен 70-433 SQL Server
Ктонибудь сдавал экзамен по 2008 SQL Server 70-433? Много там вопросов из 2008? Может есть у кого Q and A типа TestKing
bh90211
SQL Server Ошибка: changed database context to ' '
Здравствуйте уважаемые!!! Есть asp проект, который цепляется с MS SQL 2005. Периодически при добавлении новой записи, возникает сообщение: Microsoft OLE DB Provider ODBC Drivers error '80040e07' ...
Olegas
SQL 2008 - поле типа time(0) SQL Server
SQL 2008 - Есть поле типа time(0) -> чч:мм:сс как в Select отобразить только чч:мм? такой способ, по-моему, не очень красивый: <FONT color=#0000ff size=2><FONT color=#0000ff size=2>Declare<FONT...
aland
Вызов хранимой процедуры с параметрами SQL Server
Есть клиент (на Дельфе), который через ADO коннектится к серверу. В Initial Catalog указываю имя БД к которой цепляемся (пусть БД№1), и пытаюсь вызвать процедуру из другой БД на этом сервере (пусть...
enp70



Текущее время: 11:24. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.

Рейтинг@Mail.ru