Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Сложный запрос к Базе  [new]
kylibun
Member

Откуда:
Сообщений: 8
Здравствуйте, столкнулся с проблемой не могу решить.
Есть таблица с полями date, и check.
В date - дата события, в check счетчик количества этих событий.
Нужно сделать выборку в диапазоне значений дат, т.е искать например, больше 2011-08-10 и меньше 2011-08-30.
В этом диапазоне нужно найти максимальное значение check, и вытянуть id строки в котором находится это значение.
MS SQL Server 2008.
Спасибо.
31 авг 11, 19:34    [11208801]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос к Базе  [new]
yado4eg
Member

Откуда:
Сообщений: 202
1. [date] between [date1] and [date2]
2. max([check]) + group by [id], [...]
3. + еще 100500 сложнейших вариантов
4. BOL
31 авг 11, 20:08    [11208913]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос к Базе  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
yado4eg
1. [date] between [date1] and [date2]
2. max([check]) + group by [id], [...]
3. + еще 100500 сложнейших вариантов
4. BOL


ну предположим 100500 вряд ли вы предложите, даже сомневаюсь, что 100 насобираете
31 авг 11, 20:15    [11208934]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос к Базе  [new]
yado4eg
Member

Откуда:
Сообщений: 202
Winnipuh,
пофантазировать можно)
31 авг 11, 20:19    [11208948]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос к Базе  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
SELECT TOP(1) WITH TIES *
FROM [таблица]
WHERE [date]>=@FromDate AND [date]<DATEADD(DAY,1,@ToDate)
ORDER BY [check] DESC;
Условие на [date] такое, а не BETWEEN,
потому что про типы полей ничего не говорилось.
31 авг 11, 21:38    [11209146]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос к Базе  [new]
kylibun
Member

Откуда:
Сообщений: 8
автор
Условие на [date] такое, а не BETWEEN,
потому что про типы полей ничего не говорилось.

Date - smalldatetime, check - int.
Одним запросом это нельзя сделать?
31 авг 11, 23:47    [11209621]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос к Базе  [new]
kylibun
Member

Откуда:
Сообщений: 8
автор
Date - smalldatetime, check - int.
Одним запросом это нельзя сделать?

Все, увидел вывод, теперь ясно.
Всем спасибо.
31 авг 11, 23:54    [11209636]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос к Базе  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
kylibun
автор
Условие на [date] такое, а не BETWEEN,
потому что про типы полей ничего не говорилось.

Date - smalldatetime, check - int.
Одним запросом это нельзя сделать?
То есть, без моих глубокомысленных рассуждений? Можно.
1 сен 11, 11:18    [11210818]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос к Базе  [new]
kylibun
Member

Откуда:
Сообщений: 8
А можно еще один адски "сложный" вопрос про "сложный" запрос?
Нужно создать базу и производить манипуляции в ней, т.е создавать в ней таблицы, и заполнять эти самые таблицы.
Если написать нечто такое:
create database test;
CREATE TABLE Saleepeople 
      ( snum    integer, 
        sname   char (10), 
        city     char (10), 
        comm  char (10) ); 
То создаться База test, а таблицы будут созданы в системной базе данных, мне нужно чтобы таблицы и например команда insert выполнялась именно к базе Test.
11 сен 11, 23:31    [11261542]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос к Базе  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
kylibun,

use
11 сен 11, 23:33    [11261545]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос к Базе  [new]
kylibun
Member

Откуда:
Сообщений: 8
Хм, ругается что базы нет, ее в принципе нет, но она создается скриптом.
автор
Database 'test' does not exist. Make sure that the name is entered correctly.


create database test;
Use test;
go
CREATE TABLE test
      ( snum    integer, 
        sname   char (10), 
        city     char (10), 
        comm  char (10) );
INSERT INTO test(snum)
VALUES (123);
Что делаю не так?
12 сен 11, 00:22    [11261665]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос к Базе  [new]
iljy
Member

Откуда:
Сообщений: 8711
kylibun,

имя базы проверяется на стадии компиляции.
create database test;
go
Use test;
go
12 сен 11, 00:40    [11261712]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос к Базе  [new]
kylibun
Member

Откуда:
Сообщений: 8
Все заработало спасибо, но возник еще один вопрос.
Нужно создать базу с первичным ключем:
CREATE TABLE test
      ( snum    integer primary key,  
        sname   char (10), 
        city     char (10), 
        comm  char (10) )
Создается первичный ключ без проблем, но мне нужно чтобы был включен identity specification, этим свойством можно манипулировать через скрипт?
12 сен 11, 00:52    [11261738]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос к Базе  [new]
iljy
Member

Откуда:
Сообщений: 8711
kylibun,

http://msdn.microsoft.com/ru-ru/library/ms174979.aspx
12 сен 11, 01:21    [11261792]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить