Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Можно ли написать UPDATE с использованием цикла и константы?  [new]
alekseich.n
Member

Откуда:
Сообщений: 71
Можно ли написать UPDATE с использованием цикла и константы?

В общем необходимо в БД произвести UPDATE по таблице.
Но использовать при этом цикл.
Т.е. указав диапазон с 1 по 100 строку. С 1 по 5 строку UPDATE в колонку "короб" = 1 .
с 6 по 10 строку UPDATE в колонку "короб" = 2 и т.д.
С шагом в 1.

Я только простые скрипты писать могу. В подобных заданиях не было необходимости.
А сейчас потребовалось. Я даже не знаю куда посмотреть, что почитать.

Я так понимаю, необходимо с константой как то это прокрутить, и с циклом.

P.s.: Если поможете примером, а за одно подскажите что почитать. Будет очень хорошо.
Заранее спасибо!
24 сен 12, 12:09    [13211936]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли написать UPDATE с использованием цикла и константы?  [new]
miksoft
Member

Откуда:
Сообщений: 38540
По какому критерию определяется порядок записей?
24 сен 12, 12:13    [13211981]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли написать UPDATE с использованием цикла и константы?  [new]
alekseich.n
Member

Откуда:
Сообщений: 71
miksoft
По какому критерию определяется порядок записей?


По "номеру строки" их может быть тысяча.
Т.е. ручками буду указывать с 300 по 475 (к примеру)
и по 5 строк. (могут быть случаи, когда по 2 строки или по 7 строк)
24 сен 12, 12:19    [13212030]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли написать UPDATE с использованием цикла и константы?  [new]
tanglir
Member

Откуда:
Сообщений: 28966
alekseich.n
По "номеру строки" их может быть тысяча
Ну а как определяется "номер строки"?
24 сен 12, 12:49    [13212241]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли написать UPDATE с использованием цикла и константы?  [new]
alekseich.n
Member

Откуда:
Сообщений: 71
tanglir
alekseich.n
По "номеру строки" их может быть тысяча
Ну а как определяется "номер строки"?


Ручками.
Руководствуясь листком, в котором 1000 строк.
Из них от 1 до 200 по 5 строк в 1 коробку.
С 201 по 233 по 3 строки в 1 коробку.

т.е. массив строк, необходимо указывать руками.
24 сен 12, 13:05    [13212379]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли написать UPDATE с использованием цикла и константы?  [new]
alekseich.n
Member

Откуда:
Сообщений: 71
alekseich.n,

Ну или по порядку. в первую коробку 1,2,3,4,5 строку. Во вторую коробку 6,7,8,9,10 строки.
24 сен 12, 13:07    [13212391]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли написать UPDATE с использованием цикла и константы?  [new]
alekseich.n
Member

Откуда:
Сообщений: 71
alekseich.n,

точнее не "или" а именно по порядку!
Опечатался. =)
24 сен 12, 13:10    [13212414]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли написать UPDATE с использованием цикла и константы?  [new]
miksoft
Member

Откуда:
Сообщений: 38540
alekseich.n
а именно по порядку!
Определитесь, пожалуйста. Или "по порядку" тогда нужно указать критерий порядка, или "массив строк, необходимо указывать руками".
24 сен 12, 13:40    [13212674]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли написать UPDATE с использованием цикла и константы?  [new]
alekseich.n
Member

Откуда:
Сообщений: 71
miksoft
alekseich.n
а именно по порядку!
Определитесь, пожалуйста. Или "по порядку" тогда нужно указать критерий порядка, или "массив строк, необходимо указывать руками".


Я имел в виду "по порядку" - подразумевая, определенную колонку, в которой указан порядок строк.
Собственно по которому и необходимо указывать массив строк руками.

Сообщение было отредактировано: 24 сен 12, 13:49
24 сен 12, 13:45    [13212726]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли написать UPDATE с использованием цикла и константы?  [new]
tanglir
Member

Откуда:
Сообщений: 28966
alekseich.n
определенную колонку, в которой указан порядок строк.
Собственно по которому и необходимо указывать массив строк руками.
Наконец-то.
alekseich.n
В общем необходимо в БД произвести UPDATE по таблице.
Но использовать при этом цикл.
Т.е. указав диапазон с 1 по 100 строку. С 1 по 5 строку UPDATE в колонку "короб" = 1 .
с 6 по 10 строку UPDATE в колонку "короб" = 2 и т.д.
С шагом в 1.

update mytable
set korob=case when mod(nomer,5) between 1 and 5 then 1 else 2 end
Так пойдёт?
Или "и т.д." означало "с 11 по 15 строку UPDATE в колонку "короб" = 3" и т.д.?
25 сен 12, 06:27    [13216369]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли написать UPDATE с использованием цикла и константы?  [new]
alekseich.n
Member

Откуда:
Сообщений: 71
tanglir
alekseich.n
определенную колонку, в которой указан порядок строк.
Собственно по которому и необходимо указывать массив строк руками.
Наконец-то.
alekseich.n
В общем необходимо в БД произвести UPDATE по таблице.
Но использовать при этом цикл.
Т.е. указав диапазон с 1 по 100 строку. С 1 по 5 строку UPDATE в колонку "короб" = 1 .
с 6 по 10 строку UPDATE в колонку "короб" = 2 и т.д.
С шагом в 1.

update mytable
set korob=case when mod(nomer,5) between 1 and 5 then 1 else 2 end
Так пойдёт?
Или "и т.д." означало "с 11 по 15 строку UPDATE в колонку "короб" = 3" и т.д.?



Спасибо, что откликнулся. А то я уже успел отчаяться.
Если я правильно понимаю, в этом скрипте я должен знать сколько коробок я хочу создать.
В данном случае 2 короба по 5 строк в короб.
В моем случае, я могу знать только с какого номера строки по какой нужно сделать Update по 5 (или по 3 строкам)
Т.е. что бы правильно меня понятно было.
В списке 1000 строк.
Я беру по списку с 1 по 100 строку.
Эти строки укладываются в короба по 5 строк в короб.
Следующие строки могут по 3 в коробе лежать. Или по 10 строк в коробке.

Т.е. видимо необходимо использовать цикл. Который будет проверять по номеру строки. Когда 100 уложится в короб, цикл увидит эту 100-ую строку и остановится.
Еще нюанс условие, в таблице есть колонка "Список" которую необходимо уровнять с конкретным кодом списка (к примеру "55555").
25 сен 12, 17:42    [13220646]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли написать UPDATE с использованием цикла и константы?  [new]
alekseich.n
Member

Откуда:
Сообщений: 71
alekseich.n,

Прошу модераторов переместить тему в форум Oracle.
Заранее спасибо.

И тема все еще актуальна.
3 окт 12, 12:57    [13261160]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли написать UPDATE с использованием цикла и константы?  [new]
miksoft
Member

Откуда:
Сообщений: 38540
alekseich.n
Прошу модераторов переместить тему в форум Oracle.
На будущее - это правильнее делать с помощью ссылки "Сообщить модератору".

Модератор: Тема перенесена из форума "MySQL".


Сообщение было отредактировано: 3 окт 12, 12:58
3 окт 12, 12:58    [13261172]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли написать UPDATE с использованием цикла и константы?  [new]
Zloxa
Member

Откуда: СССР ☭
Сообщений: 1033
SQL> create table my_table as select dbms_random.value ord_num, cast(null as number) korob  from dual connect by level <=512;
 
Table created
SQL> merge into my_table t
  2    using (select t.*
  3                  ,row_number() over (order by ord_num) rn
  4            from my_table t )s
  5    on (t.rowid = s.rowid)
  6    when matched then update set korob = trunc((rn-1)/100)+1;
 
512 rows merged
SQL> select count(*),korob from my_table group by korob order by 2;
 
  COUNT(*)      KOROB
---------- ----------
       100          1
       100          2
       100          3
       100          4
       100          5
        12          6
 
6 rows selected
3 окт 12, 13:48    [13261592]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить