Форум: "Базы";
Текущий архив: 2002.07.08;
Скачать: [xml.tar.bz2];
ВнизПерестановка строк в БД Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c