Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Получение всех возможных вариантов данных в столбце  [new]
Залётный
Guest
Подскажите, есть ли какое-то встроенное средство для получения всех возможных вариантов значений, содержащихся в столбцах таблицы?

То есть, например, в таблице есть поле "Тип", которое принимает значения 2, 7, 10, 15 и т п. Пользователь не знает возможные варианты этих значений, можно ли их вытянуть быстро из таблицы, содержащей несколько миллионов записей? Access умеет это делать по нажатию на стрелочку вниз в заголовке столбца. При этом, если вариантов слшком много, то он их не выводит. Хотелось быс делать что-то подобное.

БД Microsoft SQL server 2008
2 апр 13, 11:23    [14125313]     Ответить | Цитировать Сообщить модератору
 Re: Получение всех возможных вариантов данных в столбце  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
distinct
2 апр 13, 11:31    [14125376]     Ответить | Цитировать Сообщить модератору
 Re: Получение всех возможных вариантов данных в столбце  [new]
iap
Member

Откуда: Москва
Сообщений: 47045
Залётный,

создайте таблицу-справочник типов, в которой расшифровывались бы 2,7,10,15 и т.д.
Пользователю показывайте эту таблицу.
Её же используйте в JOINах SELECTа из таблицы
2 апр 13, 11:31    [14125382]     Ответить | Цитировать Сообщить модератору
 Re: Получение всех возможных вариантов данных в столбце  [new]
Maxx
Member [скрыт]

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

ето все равно не кнопочка
2 апр 13, 11:33    [14125392]     Ответить | Цитировать Сообщить модератору
 Re: Получение всех возможных вариантов данных в столбце  [new]
iap
Member

Откуда: Москва
Сообщений: 47045
Maxx
iap,

ето все равно не кнопочка
Ну, вот у меня, например, такая кнопочка есть
В DevExpress Gridе. Почти в каждой колонке.
2 апр 13, 11:38    [14125427]     Ответить | Цитировать Сообщить модератору
 Re: Получение всех возможных вариантов данных в столбце  [new]
Залётный
Guest
Спасибо МАКС, что-то я сам не допёр, что можно выбрать дистинктом все неповторяющиеся строки))
2 апр 13, 11:45    [14125476]     Ответить | Цитировать Сообщить модератору
 Re: Получение всех возможных вариантов данных в столбце  [new]
Залётный
Guest
А можно ли как-то ограничить время выполнения запроса? Просто в некоторых столбцах могут быть тысячи различных вариантов. СЛишком долго мне кажется будет работать.
2 апр 13, 11:56    [14125579]     Ответить | Цитировать Сообщить модератору
 Re: Получение всех возможных вариантов данных в столбце  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3348
Залётный
А можно ли как-то ограничить время выполнения запроса? Просто в некоторых столбцах могут быть тысячи различных вариантов. СЛишком долго мне кажется будет работать.
select top (200) distinct Column1 from dbo.Table order by Column1;
Не помню только, в каком порядке должны идти top / distinct. Если не взлетит, поменяйте местами. Ну и индекс не повредит.
2 апр 13, 12:01    [14125620]     Ответить | Цитировать Сообщить модератору
 Re: Получение всех возможных вариантов данных в столбце  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Залётный,
iap - ответил
,а так если надо N первых уникальных ,то TOP DISTINCT или option (fast )
2 апр 13, 12:03    [14125629]     Ответить | Цитировать Сообщить модератору
 Re: Получение всех возможных вариантов данных в столбце  [new]
ambarka_max
Member

Откуда: Россия
Сообщений: 517
Залётный
А можно ли как-то ограничить время выполнения запроса? Просто в некоторых столбцах могут быть тысячи различных вариантов. СЛишком долго мне кажется будет работать.

Гениально! Вам бы зарплату так же выдавать, если слишком долго, то можно и не до конца выдать.
2 апр 13, 12:12    [14125695]     Ответить | Цитировать Сообщить модератору
 Re: Получение всех возможных вариантов данных в столбце  [new]
Залётный
Guest
ambarka_max
Залётный
А можно ли как-то ограничить время выполнения запроса? Просто в некоторых столбцах могут быть тысячи различных вариантов. СЛишком долго мне кажется будет работать.

Гениально! Вам бы зарплату так же выдавать, если слишком долго, то можно и не до конца выдать.


Я не имел ввиду ограничить количество выдаваемых записей, а просто их не выдавать, если запрос идёт, скажем, дольше 5 секунд прерывать его и выдавать сообщение "Ограничьте выборку или нажмите ок, чтобы дождаться завершения запроса"
2 апр 13, 12:53    [14126001]     Ответить | Цитировать Сообщить модератору
 Re: Получение всех возможных вариантов данных в столбце  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Залётный
ambarka_max
пропущено...

Гениально! Вам бы зарплату так же выдавать, если слишком долго, то можно и не до конца выдать.


Я не имел ввиду ограничить количество выдаваемых записей, а просто их не выдавать, если запрос идёт, скажем, дольше 5 секунд прерывать его и выдавать сообщение "Ограничьте выборку или нажмите ок, чтобы дождаться завершения запроса"
timeout?
3 апр 13, 00:45    [14128933]     Ответить | Цитировать Сообщить модератору
 Re: Получение всех возможных вариантов данных в столбце  [new]
jnub
Member

Откуда:
Сообщений: 32
Залётный
ambarka_max
пропущено...

Гениально! Вам бы зарплату так же выдавать, если слишком долго, то можно и не до конца выдать.


Я не имел ввиду ограничить количество выдаваемых записей, а просто их не выдавать, если запрос идёт, скажем, дольше 5 секунд прерывать его и выдавать сообщение "Ограничьте выборку или нажмите ок, чтобы дождаться завершения запроса"

Вообще то по смыслу речь скорее идёт о том, как прервать выполнение запроса?
3 апр 13, 13:07    [14130758]     Ответить | Цитировать Сообщить модератору
 Re: Получение всех возможных вариантов данных в столбце  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3348
jnub
Залётный
пропущено...


Я не имел ввиду ограничить количество выдаваемых записей, а просто их не выдавать, если запрос идёт, скажем, дольше 5 секунд прерывать его и выдавать сообщение "Ограничьте выборку или нажмите ок, чтобы дождаться завершения запроса"

Вообще то по смыслу речь скорее идёт о том, как прервать выполнение запроса?
Прервать легко - свойство QueryTimeout было в библиотеках доступа еще со времен царя Гороха.

Другой вопрос, что
Залётный
или нажмите ок, чтобы дождаться завершения запроса
таким способом реализовать, как я понимаю, не получится.
3 апр 13, 15:43    [14131800]     Ответить | Цитировать Сообщить модератору
 Re: Получение всех возможных вариантов данных в столбце  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Ennor Tiegael
jnub
пропущено...

Вообще то по смыслу речь скорее идёт о том, как прервать выполнение запроса?
Прервать легко - свойство QueryTimeout было в библиотеках доступа еще со времен царя Гороха.

Другой вопрос, что
Залётный
или нажмите ок, чтобы дождаться завершения запроса
таким способом реализовать, как я понимаю, не получится.
Ну почему же, можно запустить выполнение того же самого запроса еще раз, только с таймаутом побольше.
3 апр 13, 23:29    [14133295]     Ответить | Цитировать Сообщить модератору
 Re: Получение всех возможных вариантов данных в столбце  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31778
Ennor Tiegael
Залётный
или нажмите ок, чтобы дождаться завершения запроса
таким способом реализовать, как я понимаю, не получится.
Почему, в SSMS ведь можно прервать запрос, что тут необычного?

Вот в ADO.NET есть метод Cancel у класса SqlCommand, в справке есть даже пример с такой функциональностью.

Естественно, писать нужно самому, в обычной синхронной модели всё это в принципе невозможно - ведь после задания вопроса нужно вернуться к прерванной команде...
4 апр 13, 00:28    [14133401]     Ответить | Цитировать Сообщить модератору
 Re: Получение всех возможных вариантов данных в столбце  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
alexeyvg
Ennor Tiegael
пропущено...
таким способом реализовать, как я понимаю, не получится.
Почему, в SSMS ведь можно прервать запрос, что тут необычного?

Вот в ADO.NET есть метод Cancel у класса SqlCommand, в справке есть даже пример с такой функциональностью.

Естественно, писать нужно самому, в обычной синхронной модели всё это в принципе невозможно - ведь после задания вопроса нужно вернуться к прерванной команде...
Команду можно и не прерывать, пока пользователь думает над вопросом. Но реализация конечно всего этого механизма асинхронности будет посложнее.
4 апр 13, 02:10    [14133487]     Ответить | Цитировать Сообщить модератору
 Re: Получение всех возможных вариантов данных в столбце  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31778
Mind
alexeyvg
пропущено...
Почему, в SSMS ведь можно прервать запрос, что тут необычного?

Вот в ADO.NET есть метод Cancel у класса SqlCommand, в справке есть даже пример с такой функциональностью.

Естественно, писать нужно самому, в обычной синхронной модели всё это в принципе невозможно - ведь после задания вопроса нужно вернуться к прерванной команде...
Команду можно и не прерывать, пока пользователь думает над вопросом. Но реализация конечно всего этого механизма асинхронности будет посложнее.
Ну да, ТС так и хочет.

Запускаем асинхронно команду, запускаем свой таймер.
При срабатывании таймера задаём пользователю вопрос, если хочет прервать, то прерываем команду.

В принципе ничего сложного нету, в хелпе даже пример имеется.
4 апр 13, 09:21    [14133813]     Ответить | Цитировать Сообщить модератору
 Re: Получение всех возможных вариантов данных в столбце  [new]
evile
Member

Откуда:
Сообщений: 13
Спасибо всем ответившим! Проблема в том, что при большом количестве записей возникает OutOfMemory error. Соответственно программно я отлавливаю это исключение и прошу ограничить выборку. Но возможно можно средствами sql как-то узнать количество записей, которые он возвращает запросом SELECT?
25 апр 13, 10:21    [14228502]     Ответить | Цитировать Сообщить модератору
 Re: Получение всех возможных вариантов данных в столбце  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22551
читать из БД всегда не больше 1000 записей например
и если 1001-я запись прочиталась, выдавать подсказывающее сообщение "дорогой юзер, ограничь выборку плз"
25 апр 13, 10:27    [14228519]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить