Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > Как создать номера строк при SELECT


Автор: Pankon 4.9.2006, 23:37
Есть SELECT SQL запрос...

Как сделать так, что бы в первом столбце генерировались номера возвращяемых записей 1,2,3,4,5, ...

Автор: marcusmae 5.9.2006, 00:33
Cделать первый столбец с AutoIncrement :

Код

    column = new DataColumn();
    column.DataType = System.Type.GetType("System.Int32");
    column.ColumnName = "id";
    column.ReadOnly = true;
    column.Unique = true;
    column.AutoIncrement = true;
    column.AutoIncrementSeed = 1;
    column.AutoIncrementStep = 1;


Автор: kobra 5.9.2006, 08:06
если MS SQL Server 2005, то там каманда есть для этого.

Автор: mr.DUDA 5.9.2006, 08:28
если SQL Server, нужно поставить в свойстве колонки Identity = true

Автор: Pankon 5.9.2006, 10:58
Цитата(Pankon @  4.9.2006,  23:37 Найти цитируемый пост)
Есть SELECT SQL запрос
Цитата(Pankon @  4.9.2006,  23:37 Найти цитируемый пост)
что бы в первом столбце генерировались номера возвращяемых записей 

Попытаюсь еще раз сформулировать вопрос......
Есть запрос
Код

 SELECT ID, NAME FROM T1
, который возвращает записи(для примера ТРИ записи):
23   q1
34  eee
45  rrrr

Мне надо, что бы в первом столбце генерировались номера возвращяемых записей. т.е
1   23   q1
2   34  eee
3   45  rrrr

smile

Как?

ПС. Вопрос про SQL...

Автор: arilou 5.9.2006, 11:24
Pankon, вижу одно решение: создать временную таблицу вида

Код

CREATE TABLE #tmp
  autoID int IDENTITY(1,1) NOT NULL,
  ID int NOT NULL, 
  Name nvarchar(50) NOT NULL


Выполнить 

Код

SELECT * FROM table1 INTO #tmp


А вернуть

Код

SELECT * FROM #tmp


Примерно так должно работать в SQL Server. По идее, этот SQL надо пихать в хр.процедуру.

Автор: mr.DUDA 5.9.2006, 12:38
Кстати, если результат запроса помещать в датасет, то отдельная колонка не нужна - номер записи будет индексом DataRow-а в коллекции DataTable.Rows

Автор: arilou 5.9.2006, 13:03
Цитата(mr.DUDA @  5.9.2006,  12:38 Найти цитируемый пост)
Кстати, если результат запроса помещать в датасет, то отдельная колонка не нужна - номер записи будет индексом DataRow-а в коллекции DataTable.Rows 

->
Цитата(Pankon @  5.9.2006,  10:58 Найти цитируемый пост)
ПС. Вопрос про SQL...


отсюда и решение для SQL

Автор: KAFLAN 28.9.2006, 03:25
Более простой в реализации приём чем предложил ув. Arilou:
select count (i1.id) as rank, i1.title
from Table as i1 inner join Table as i2 on
    i1.id >= i2.id
group by i1.id, i1.title
order by rank

Где Table таблица из которой происходит выборка, Id - праймери кей, Title - строковое поле таблицы.

Кроме всего прочего данный приём позволяет выполнять код непосредственно со стороны клиента без использования хранимых процедур.

Автор: Pankon 7.2.2007, 13:31
KAFLAN, твой вариант функционирует... Но задача усложнилась, и теперь требуется следующее:
Таблица Table имеет столбец Sort, так вот требуется как и раньше генерировать номера строк, Но сами строки дожны быть упорядочены согласно Sort например по возрастанию...

спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)