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

Откуда: Минск
Сообщений: 47
Здраствуйте, есть как мне кажется нетривиальная проблемка:
Я создал базу в MS SQL Server Managment Studio, в нее экспортировал лист excel

автор
SELECT * INTO ApproverList FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=E:\List.xls;Extended Properties=Excel 5.0')...[Лист1$]


таблицу ApproverList переименовал в repair
теперь при записи в эту таблицу
автор
"INSERT INTO repair (column1, column2...

строки записываются в начало, а мен надо в конец, подскажите что я забыл сделать?
12 фев 13, 14:03    [13913872]     Ответить | Цитировать Сообщить модератору
 Re: insert делает запись в начало таблицы а не в конец  [new]
Glory
Member

Откуда:
Сообщений: 104751
fargutvest
строки записываются в начало, а мен надо в конец

Это вы как установили ?
12 фев 13, 14:04    [13913882]     Ответить | Цитировать Сообщить модератору
 Re: insert делает запись в начало таблицы а не в конец  [new]
Гость333
Member

Откуда:
Сообщений: 3683
fargutvest
подскажите что я забыл сделать?

Вы забыли сделать сортировку (order by) при выводе результата.
12 фев 13, 14:04    [13913888]     Ответить | Цитировать Сообщить модератору
 Re: insert делает запись в начало таблицы а не в конец  [new]
fargutvest
Member

Откуда: Минск
Сообщений: 47
Glory
fargutvest
строки записываются в начало, а мен надо в конец

Это вы как установили ?


после добавления строки в программе, я ткрываю SQL Managment Studio, делаю выборку трок из таблицы и виже что мои добавленные строки в самом верху таблицы над уже существующими


Гость333
fargutvest
подскажите что я забыл сделать?

Вы забыли сделать сортировку (order by) при выводе результата.


мне нужно сделать именно запись, order by это сортировка того что уже находится в таблице
12 фев 13, 14:10    [13913932]     Ответить | Цитировать Сообщить модератору
 Re: insert делает запись в начало таблицы а не в конец  [new]
Glory
Member

Откуда:
Сообщений: 104751
fargutvest
после добавления строки в программе, я ткрываю SQL Managment Studio, делаю выборку трок из таблицы и виже что мои добавленные строки в самом верху таблицы над уже существующими

Это порядок отображения, а не порядок физического расположения

fargutvest
мне нужно сделать именно запись, order by это сортировка того что уже находится в таблице

Нет order by - нет гарантированного порядка в результате запроса.
И опять же в физическому порядку записей в таблице order by не имеет отношения

Сообщение было отредактировано: 12 фев 13, 14:13
12 фев 13, 14:12    [13913952]     Ответить | Цитировать Сообщить модератору
 Re: insert делает запись в начало таблицы а не в конец  [new]
Gwa
Guest
fargutvest,
таблица Access это совсеи не то же что лист Excel..
Вы не может указывать таблице место вставки
и нет в БД такого понятия как порядок записей в таблице
Порядок появляется только в результате упорядоченной выборки
12 фев 13, 14:16    [13913979]     Ответить | Цитировать Сообщить модератору
 Re: insert делает запись в начало таблицы а не в конец  [new]
fargutvest
Member

Откуда: Минск
Сообщений: 47
Glory, А как тогда мне убедиться что добавленные строки записались именно вконец?
12 фев 13, 14:17    [13913988]     Ответить | Цитировать Сообщить модератору
 Re: insert делает запись в начало таблицы а не в конец  [new]
Glory
Member

Откуда:
Сообщений: 104751
fargutvest
Glory, А как тогда мне убедиться что добавленные строки записались именно вконец?

Зачем вам нужно, чтобы запись физически была в конце, если при выборке все равно нужно использовать order by ?
Что вы вообще понимаете под "концом таблицы" ?
12 фев 13, 14:19    [13914004]     Ответить | Цитировать Сообщить модератору
 Re: insert делает запись в начало таблицы а не в конец  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
fargutvest
строки записываются в начало, а мен надо в конец, подскажите что я забыл сделать?
Например, добавить поле IDENTITY и при выборке сортировать по нему
12 фев 13, 14:21    [13914018]     Ответить | Цитировать Сообщить модератору
 Re: insert делает запись в начало таблицы а не в конец  [new]
fargutvest
Member

Откуда: Минск
Сообщений: 47
Gwa
fargutvest,
таблица Access это совсеи не то же что лист Excel..
Вы не может указывать таблице место вставки
и нет в БД такого понятия как порядок записей в таблице
Порядок появляется только в результате упорядоченной выборки


У меня таблица SQL.
12 фев 13, 14:24    [13914042]     Ответить | Цитировать Сообщить модератору
 Re: insert делает запись в начало таблицы а не в конец  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37254
Какая разница, в каком "месте" таблицы находится запись, если без order by сервер будет выбирать их в любом ему вздумавшемся порядке?
12 фев 13, 14:29    [13914081]     Ответить | Цитировать Сообщить модератору
 Re: insert делает запись в начало таблицы а не в конец  [new]
fargutvest
Member

Откуда: Минск
Сообщений: 47
Glory
fargutvest
Glory, А как тогда мне убедиться что добавленные строки записались именно вконец?

Зачем вам нужно, чтобы запись физически была в конце, если при выборке все равно нужно использовать order by ?
Что вы вообще понимаете под "концом таблицы" ?


это мне нужно для того чтобы читать из таблицы строки например вот так :
автор
Private Sub GData1(ByVal selectCom As String)
Dim connections As String = _
"Integrated Security=false;User=" & user & ";Password=" & password & ";Initial Catalog=" & nameBase & ";Connect timeout=" & timeout & ";Data Source=" & nameServ & ""
Me.dataAdapter = New SqlDataAdapter(selectCom, connections)
Dim commandBuilder As New SqlCommandBuilder(Me.dataAdapter)
Dim table As New DataTable()
table.Locale = System.Globalization.CultureInfo.InvariantCulture
Me.dataAdapter.Fill(table)
With table
For i = 0 To .Rows.Count - 1
DataGridView1.Rows.Add()
For j = 0 To .Columns.Count - 1
DataGridView1.Rows(i).Cells(j).Value = .Rows(i).Item(j).ToString

Next
Next
End With
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
GData1("SELECT * FROM repair ")
End Sub


в той же послелдовательности в какой они были записаны, например вот я экспортировал в SQL екселевский файл - сформировалась какая-то таблица, которая имеет первую строку и последнюю строку, и при добавлении новых строк мне нуждно чтоб они записывались в строки последняя+1, последняя+2 и т.д
12 фев 13, 14:34    [13914132]     Ответить | Цитировать Сообщить модератору
 Re: insert делает запись в начало таблицы а не в конец  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37254
Заведите в таблице поле, которое будет определять порядок записей, и сортируйте по нему при выборке.
12 фев 13, 14:36    [13914160]     Ответить | Цитировать Сообщить модератору
 Re: insert делает запись в начало таблицы а не в конец  [new]
Gwa
Guest
fargutvest,
>>У меня таблица SQL.
Не имеет значения.
То что я Вам писал не зависит от конкретной БД.
12 фев 13, 14:43    [13914216]     Ответить | Цитировать Сообщить модератору
 Re: insert делает запись в начало таблицы а не в конец  [new]
fargutvest
Member

Откуда: Минск
Сообщений: 47
Спасибо за ответы, как я понял строки в таблице хранятся хаотично и нужно делать какую-нибудь колонку для индентификации номера например id=1,2,3,4,5..., и при каждой новой записи читать эту колонку, искать максимальный номер N и новой записи присваивать N+1. А чтение делать например так "SELECT * FROM repair ORDER BY id" и тогда будет выводится в нужном порядке, я правильно понял?
12 фев 13, 14:46    [13914236]     Ответить | Цитировать Сообщить модератору
 Re: insert делает запись в начало таблицы а не в конец  [new]
fargutvest
Member

Откуда: Минск
Сообщений: 47
Gwa
fargutvest,
>>У меня таблица SQL.
Не имеет значения.
То что я Вам писал не зависит от конкретной БД.

Ясно, это просто небольшое уточнение.
12 фев 13, 14:47    [13914244]     Ответить | Цитировать Сообщить модератору
 Re: insert делает запись в начало таблицы а не в конец  [new]
Гость333
Member

Откуда:
Сообщений: 3683
fargutvest
при каждой новой записи читать эту колонку, искать максимальный номер N и новой записи присваивать N+1

Если у столбца будет свойство identity, то описанное вами будет происходить автоматически.
create table #test(id int identity, name varchar(100));
insert #test (name) values ('Сидоров');
insert #test (name) values ('Иванов');
insert #test (name) values ('Петров');
select * from #test order by id;
12 фев 13, 15:03    [13914374]     Ответить | Цитировать Сообщить модератору
 Re: insert делает запись в начало таблицы а не в конец  [new]
fargutvest
Member

Откуда: Минск
Сообщений: 47
Всем спасибо, разобрался!
13 фев 13, 14:27    [13920541]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить