Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.08;
Скачать: CL | DM;

Вниз

Перестановка строк в БД   Найти похожие ветки 

 
sst   (2002-06-14 13:32) [0]

Необходимо переставить в базе данных N полей (начиная со строки X до строки Y) на M позиций вниз (вверх).
Чего-то я никак не могу сообразить, как рабоать не с полями, а с целыми строками... Помогите примерчиком плз.


 
NDeu ©   (2002-06-14 13:46) [1]

В БД нет понятие "M позиций вниз (вверх)".
Уточни что ты имееш ввиду и (сам) получиш ответ


 
sst   (2002-06-14 13:54) [2]

Нужно физически переставить несколько строк вниз. В таблице итак используется сложный индекс (по нескольким полям). Нужно именно физически переставить. Т.е. я пердствляю это так: из исходной таблицы во временную копируем строки с начала и до М, потом нужное кол-во строк запоминаем, и копируем во вторую таблицу строки до позиции вставки. Потом копируем сохраненные и все что осталось, временную таблицу переименовываем в исходную.


 
VictorT ©   (2002-06-14 13:59) [3]


> sst (14.06.02 13:54)

Правильно представляешь. В этом тебе помогут курсоры.


 
dimis   (2002-06-14 15:17) [4]

ЛЮДИ ОПОМНИТЕСЬ!!
Вы же работаете с реляционной базой данных!!!
физически переставлять это по меньшей мере глупо, а по большей абсольтно не верно.
в FoxPro это может быть и прокатит,но кто даст гарантию?( разве только разработчики Субд). конечно некоторые могут возразить: "это проверено, все работает правильно и т.п.". Спорить не буду, но приведу аргумент против способа sst.
Твой вариант нормальный если в таблице 10,20.. пусть даже 100 записей. А если 1000, 10000, что тогда?времы выполнения возрастет значительно и не будет уже никого устраивать.
SQL разрабатывали достаточно умные люди и подумали о тростых програмистах ( таких как мы с вами)
существует такой оператор "order by" предназначенный специально для таких случаев
мой вариант такой: ввести еще одно поле в таблице "order_no" и при запросе селать так
select * from table1
where ....
order by order_no
этот запрос выдаст строки в нудном порядке.
если надо поменять порядок записей : просто меняется это поле и все... никаких перестановок или заморочек.

P.S. извиняюсь за резкость


 
MishGan`   (2002-06-14 16:09) [5]

Полностью согласен с dimis.
Такого понятия как "физический порядок строк, хранящихся в таблице" в реляционной СУБД не существует.



Страницы: 1 вся ветка

Текущий архив: 2002.07.08;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
14-23752
kami
2002-06-02 21:23
2002.07.08
Дело такое, у меня есть программа, но она закомпилированна....


14-23738
bpv
2002-05-30 11:06
2002.07.08
Генерация шаблонов файлов справки виндоус


14-23783
Юлия
2002-06-07 19:57
2002.07.08
в 2006 году онлайновых игр будет в шесть раз больше, чем сегодня


3-23482
nick_sniper
2002-06-12 23:23
2002.07.08
Работа с Access через Delphi


4-23830
Olgerd
2002-05-09 15:29
2002.07.08
Ускорение запуска консольной проги.