|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.08.2010, 21:07 | #1 |
Пользователь
Регистрация: 25.10.2009
Сообщений: 92
|
Вставка строк не в конец таблицы
Задача вставить строку после определенной строки. Например, есть таблица Т(ID, F1, F2), и нужно после строчки с F1 = 10 вставить строчку со значениями полей F1 = 20, F2 = значению F2 в строчке, после которой вставляем (с F1 = 10). ID автоинкрементируется. Помогите пожалуйста разобраться, знаю очень мало приемов языка SQL.
|
14.08.2010, 06:53 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
То, о чём Вы пытаетесь рассказать, противоречит основам реляционных СУБД, и, соответственно, не может быть реализовано через вставку данных через Insert !
В таблице нет понятия "первая строка", "вторая строка", "строка, следующая за...". Просто вставляйте запись, обеспечив заполнение данных так, чтобы, при необходимости, написав запрос SELECT .. from ... ORDER BY получить данные в нужном порядке. И всё. |
14.08.2010, 10:34 | #3 |
Пользователь
Регистрация: 25.10.2009
Сообщений: 92
|
Вот, я тоже думала о сортировке, но по заданию нужно обойтись одним запросом. Либо можно написать процедуру TSQL. А можно ли средствами TSQL решить указанную задачу?
|
14.08.2010, 16:42 | #4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
нет. Поймите же, даже если вы напишете
Insert into Table1 ... values (1..); Insert into Table1 ... values (2..); то, согласно принципам организации реляционных СУБД, нет гарантий, что строчка 2 будет идти после строчки 1 Именно поэтому, если порядок имеет какое-либо значение, нужно использовать ORDER BY p.s. в реальной жизни, в 99% случаев строчка 2 будет идти после строчки 1.. но забиваться на это я бы лично не стал. Ибо - это противоречит теории. p.p.s. А Вы уверены, что задание поняли/передали правильно? Кто такие задания придумывает?! ДОБАВЛЕНО! А какая СУБД?! Может быть в ней (вопреки теории) есть возможность добавлять данные после определённой строки?! Последний раз редактировалось Serge_Bliznykov; 14.08.2010 в 16:45. |
14.08.2010, 18:52 | #5 |
Участник клуба
Регистрация: 28.06.2009
Сообщений: 1,950
|
Когда я делал одно приложение с помощью Access, там удавалось обычно вставлять данные похожим образом. По крайней мере порядок был обычно такой.
|
14.08.2010, 21:13 | #6 |
Пользователь
Регистрация: 25.10.2009
Сообщений: 92
|
Serge_Bliznykov,
тоже не совсем понимаю задание, видимо требуется уточнить у составителя. Но там русским языком написано вставить запись такую-то после записи такой-то. К СУБД требований нет, делаю в MS SQL Server 2005 Express. Спасибо за ответ, остановлюсь пока на order by. motorway, можно поподробнее, как вставляли и какой порядок получали? |
19.08.2010, 00:28 | #7 |
Участник клуба
Регистрация: 28.06.2009
Сообщений: 1,950
|
Это было приложение, использующее компонент WebGrid от одной иностранной фирмы. При операциях с этим гридом (таблицей) вызываются запросы. Там вроде бы просто был обычный запрос типа INSERT ... и SELECT, во всяком случае порядок строк при выводе был всегда один и тот же и нужный мне. Специальных сортировок и т.п. не было. База аксессовская .mdb. Код на C#
|
29.08.2010, 22:47 | #8 | |
Регистрация: 21.03.2009
Сообщений: 4
|
Цитата:
Если существует первичный ключ по полю то запись с id 1 всегда, со 100% вероятностью, будет возвращаться перед записью с id 2, если не указан порядок сортировки. |
|
30.08.2010, 07:38 | #9 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
ни о каких 100% и речи быть не может. |
|
30.08.2010, 07:48 | #10 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Вставляешь новую. В это поле вбиваешь ее фактический индекс, и все остальные где индекс более вставленного увеличиваешь на единицу. Код:
Цитата:
I'm learning to live...
|
||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
вставка символа "конец строки" (Pascal) | ТаняН | Помощь студентам | 2 | 05.06.2010 15:08 |
Вставка из другой таблицы | Graggis1 | Microsoft Office Access | 5 | 20.08.2009 18:46 |
Перенести первые k строк в конец массива, соблюдая порядок их следования. | umiko | Microsoft Office Excel | 1 | 16.05.2009 08:29 |
Вставка строки из таблицы | Tanusha | SQL, базы данных | 0 | 16.03.2009 10:19 |
Вставка пустых строк в FastReport'е | Boatswain | БД в Delphi | 1 | 13.11.2008 14:41 |