Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как выбрать записи которые находятся рядом ?  [new]
Воспрошающий
Guest
Например таблица
id,id_2, Name,data
11 фев 06, 16:19    [2346659]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать записи которые находятся рядом ?  [new]
Воспрошающий
Guest
Нужно для каждого id_2 и Name выбрать количство записей которые рядом по дате. Фух.
Запросом без ХП.
Идею хотя бы.
11 фев 06, 16:22    [2346660]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать записи которые находятся рядом ?  [new]
user007
Guest
select top 2 id, id_2, Name, data from XXX
where id > 777
order by id

Почитайте в FAQ как делается постраничная выборка
11 фев 06, 16:34    [2346667]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать записи которые находятся рядом ?  [new]
guest1187
Guest
А что значит "рядом"?
11 фев 06, 16:34    [2346669]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать записи которые находятся рядом ?  [new]
Воспрошающий
Guest
Пример

Alex 21-01-2005 pivo
Alex 22-01-2005 pivo
Alex 23-01-2005 vodka
Alex 25-01-2005 pivo
Max 21-01-2005 pivo
Max 22-01-2005 pivo
Max 23-01-2005 pivo


Нужно выбрать Alex pivo 2
Max pivo 3

Одним запросом. Я в шоке, как это можно сделать ?
11 фев 06, 16:45    [2346677]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать записи которые находятся рядом ?  [new]
guest1187
Guest
Все-таки не совсем ясен смысл термина "рядом". Разница в 1 день?
11 фев 06, 16:51    [2346681]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать записи которые находятся рядом ?  [new]
SVP
Member

Откуда: Moscow
Сообщений: 147
if object_id ('dbo._tbl') is not null
	drop table dbo._tbl

create table dbo._tbl (name1 varchar (100), name2 varchar (100), dt datetime)

insert into dbo._tbl (name1, name2, dt)

select 'Alex', 'pivo', '20050121'
union all
select 'Alex', 'pivo', '20050122'
union all
select 'Alex', 'vodka', '20050123'
union all
select 'Alex', 'pivo', '20050125'
union all
select 'Max', 'pivo', '20050121'
union all
select 'Max', 'pivo', '20050122'
union all
select 'Max', 'pivo', '20050123'

select t1.name1, t1.name2, count (*) + 1
from dbo._tbl t1
join dbo._tbl t2 on
	t2.name1 = t1.name1 and
	t2.name2 = t1.name2
where datediff (dd, t1.dt, t2.dt) = 1
group by t1.name1, t1.name2
order by t1.name1, t1.name2
11 фев 06, 17:22    [2346709]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать записи которые находятся рядом ?  [new]
Paul Sacks
Member

Откуда:
Сообщений: 1105
guest1187
А что значит "рядом"?


Вопрос дня!!! Молодец. :)
11 фев 06, 17:46    [2346734]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать записи которые находятся рядом ?  [new]
Воспрошающий
Guest
Рядом значит что при сортировке по дате эти записи должны бть рядом.
В моем пример данные отсортированы по дате.
И есть промежутки
Промежуток из 3 записей
И из двух
11 фев 06, 17:57    [2346744]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать записи которые находятся рядом ?  [new]
Воспрошающий
Guest
2Svp Ага что то так ... сейчас соображу :-)
11 фев 06, 17:59    [2346746]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать записи которые находятся рядом ?  [new]
aLexx Subb
Member

Откуда: С необъятных просторов нашей Родины
Сообщений: 280
А не пробовал просто по имени, и напитку сгруппировать, а количество вывести коунтом. Есть такие запросы с группировкой. Все будет как надо .

3нание бывает двух видов. Мы сами знаем предмет - или же знаем, где найти о нем сведения. (©Бенджамин Франклин )
Ага, и я с ним полностью согласен! :)
11 фев 06, 18:32    [2346779]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать записи которые находятся рядом ?  [new]
aLexx Subb
Member

Откуда: С необъятных просторов нашей Родины
Сообщений: 280
А не пробовал просто по имени, и напитку сгруппировать, а количество вывести коунтом. Есть такие запросы с группировкой. Все будет как надо .

3нание бывает двух видов. Мы сами знаем предмет - или же знаем, где найти о нем сведения. (©Бенджамин Франклин )
Ага, и я с ним полностью согласен! :)
11 фев 06, 18:35    [2346782]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать записи которые находятся рядом ?  [new]
Воспрошающий
Guest
Тогда в набор попадут те записи которые не нужны
Напримем

Jhon 21-01-05 pivo
Jhon 22-01-05 pivo
Jhon 23-01-05 vodka
Jhon 24-01-05 pivo

Должно быть jhon pivo 2

А Ваш запрос (с группировками) вернет jhon pivo 3
11 фев 06, 18:54    [2346799]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать записи которые находятся рядом ?  [new]
Paul Sacks
Member

Откуда:
Сообщений: 1105
Почитай у Кена Хендорсона про оператор Select и рядом стоящие записи.
11 фев 06, 20:05    [2346853]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать записи которые находятся рядом ?  [new]
SVP
Member

Откуда: Moscow
Сообщений: 147
Воспрошающий
Тогда в набор попадут те записи которые не нужны
Напримем

Jhon 21-01-05 pivo
Jhon 22-01-05 pivo
Jhon 23-01-05 vodka
Jhon 24-01-05 pivo

Должно быть jhon pivo 2

А Ваш запрос (с группировками) вернет jhon pivo 3


Это с какого перепугу он вернет jhon pivo 3? Запустите скрипт хотя бы раз, а потом говорите.

if object_id ('dbo._tbl') is not null
	drop table dbo._tbl

create table dbo._tbl (name1 varchar (100), name2 varchar (100), dt datetime)

insert into dbo._tbl (name1, name2, dt)
select 'Jhon', 'pivo', '20050121'
union all
select 'Jhon', 'pivo', '20050122'
union all
select 'Jhon', 'vodka', '20050123'
union all
select 'Jhon', 'pivo', '20050124'

select t1.name1, t1.name2, count (*) + 1
from dbo._tbl t1
join dbo._tbl t2 on
	t2.name1 = t1.name1 and
	t2.name2 = t1.name2
where datediff (dd, t1.dt, t2.dt) = 1
group by t1.name1, t1.name2
order by t1.name1, t1.name2
11 фев 06, 20:27    [2346868]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать записи которые находятся рядом ?  [new]
Воспрошающий
Guest
2SVP Я не Вам, с Вашим скриптом я согласен :-)
11 фев 06, 20:46    [2346885]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать записи которые находятся рядом ?  [new]
SVP
Member

Откуда: Moscow
Сообщений: 147
Тогда sorry
11 фев 06, 22:11    [2346978]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить