Subject | AW: AW: [firebird-support] Sequence |
---|---|
Author | Check_Mail |
Post date | 2016-12-13T14:41:53Z |
Thank you
Von: firebird-support@yahoogroups.com [mailto:firebird-support@yahoogroups.com]
Gesendet: Freitag, 2. Dezember 2016 15:16
An: firebird-support@yahoogroups.com
Betreff: Re: AW: [firebird-support] Sequence
Hi
i do not read your whole info but maybe you need to use case statement
e.g your 3 update statements can be changed fro:
Update table set prio = newprio(1) where id = 20;
Update table set prio = prio – 1 where prio < newprio;
Update table set prio = prio + 1 where prio > newprio;
to one:
Update table set prio = CASE WHEN id = 20 THEN newprio(1) ELSE WHEN prio < newprio THEN prio – 1 ELSE WHEN prio > newprio THEN rio + 1 END ;
regards,
Karol Bieniaszewski
W dniu 2016-12-02 10:54:57 użytkownik 'Check_Mail' check_mail@... [firebird-support] <firebird-support@yahoogroups.com> napisał:
.. and can I order all active records completly?
(without a loop)
Update table set prio = 1 to n where prio is not null order by prio?
Von: firebird-support@yahoog roups.com [mailto:firebird-support@yahoogroups.com]
Gesendet: Freitag, 2. Dezember 2016 10:44
An: firebird-support@yahoogroups.com
Betreff: AW: [firebird-support] Sequence
Okay,
I would simply change the prio new in steps of 10.
Also I can do the following:< /p>
Priority in steps of 1
ID 10 Prio 1
ID 20 Prio 2
ID 23 Prio 3
ID 11 Prio 4
Now the user can Set the ID 23 to Prio 2, how can I realize this without a loop?
Update table set prio = newprio(1) where id = 20;
Update table set prio = prio – 1 where prio < newprio;
Update table set prio = prio + 1 where prio > newprio;
..more simplier?
Von: firebird-support@yahoogroups.com [mailto:firebird-support@yahoogroups.com]
Gesendet: Donnerstag, 1. Dezember 2016 18:47
An: firebird-support@yahoogroups.com
Betreff: RE: [firebird-support] Sequence
Olag,
> Before
> Record 1 prio 3
> Record 2 prio 10
> Record 3 prio 18
> Record 4 prio 20
> Record 5 prio 30
>
> The user set the record 4 to prio 15, I would like to do this:
>
> Record 1 from 3 to 10
> Record 2 from 10 to 20
> Record 3 from 20 (should 15, Destination between record 2 and record 3)) to
> 30
> Record 4 to 40
> Record 5 to 50
You example is confusing.
If a user can never change the position of Record 4 ahead of Record 3 (as is the case in your example) what purpose does priority serve.
If you had said that the outcome you wanted was:
Record 1 from 3 to 10
Record 2 from 10 to 20
Record 4 to 30 <-*********
Record 3 from 20 (should 15, Destination between record 2 and record 3)) to 40 <-*********
Record 5 to 50
Then that would have made sense.
Please clarify, the problem domain does matter to the solution.
Sean