Subject Re: AW: [firebird-support] Sequence
Author liviuslivius
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