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

Например есть таблица у которой N колонок, и на веб странице когда пользователь кликает по колонке нужно по ней отсортировать данные

@col nvarchar(20) -- имя колонки

select * from dbo.Test order by @col


Поискал в инете но там только через case - это не совсем то что нужно, или проще формировать запрос на стороне клиента?

Спасибо
20 янв 16, 17:40    [18707451]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка  [new]
Glory
Member

Откуда:
Сообщений: 104751
Гость_U
на веб странице когда пользователь кликает по колонке

Ну так и составьте текст запроса в зависимости от того, куда там кликает ваш пользователь
20 янв 16, 17:43    [18707477]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка  [new]
Гость_U
Guest
Glory,

а ХП никак нельзя написать? текст запроса я всегда успею написать, но хотелось бы что бы все было в одном месте на сервере в виде ХП, а то всего несколько запросов придется создавать на клиенте
20 янв 16, 17:52    [18707536]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
А на клиенте ведь можно сгенерить любой запрос:

'select * from dbo.Test order by ' + @col
20 янв 16, 18:16    [18707667]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8350
Гость_U,

если сортировки и нужны для обработки данных, то они в ХП определены однозначно. Те сортировки, о которых Вы пишете, нужны пользователю, поэтому сортировкой должен заниматься именно пользовательский интерфейс тем или иным способом. Составление запроса с сортировкой, к примеру или сортировкой массива или как-то еще. В этом случае можно выбирать вид отображения данных без повторных запросов к серверу.
20 янв 16, 18:17    [18707673]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка  [new]
o-o
Guest
create proc dbo.usp_sort 
   @col nvarchar(20) 
as 
set nocount on;
begin try 
   if not exists (select *
                  from sys.columns
                  where name = @col
                        and object_id = object_id('dbo.test1'))
   raiserror ('Invalid column name %s', 16, 1, @col);                
   declare @sql nvarchar(100) = N'select * from dbo.test1 order by ' + quotename(@col);
   exec(@sql);
end try
begin catch
   declare @err nvarchar(4000) = error_message();
   raiserror(@err, 16, 1);
end catch;     
20 янв 16, 18:20    [18707686]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8350
o-o,

никто не говорил, что это физически нельзя сделать ;-)
20 янв 16, 18:21    [18707697]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка  [new]
o-o
Guest
Владислав Колосов,
я просто ему в ответ на просьбу написать ХП.
а ваш ответ вообще только сейчас читаю
20 янв 16, 18:26    [18707712]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить