Thanks, will give that a try as well.

RBS



On Wed, Oct 17, 2012 at 12:00 AM, Black, Michael (IS)
<michael.bla...@ngc.com> wrote:
> Ok...how about with triggers then?
> This will give a unique number to each sequence as you insert them.
>
> CREATE TABLE Test(ID,Value,Group_Marker);
> CREATE TRIGGER insert_trigger1 after insert on Test
> WHEN new.id=1
> BEGIN
>   UPDATE Test set Group_Marker=1;
> END;
> CREATE TRIGGER insert_trigger2 after insert on Test
> WHEN new.id > 1 and ((SELECT Group_Marker from Test where id=new.id-1 and 
> Value=new.Value) IS NOT NULL)
> BEGIN
>   UPDATE Test set Group_Marker=(select Group_Marker from Test where 
> id=new.id-1) where id=new.id;
> END;
> CREATE TRIGGER insert_trigger3 after insert on Test
> WHEN new.id > 1 and ((SELECT Group_Marker from Test where id=new.id-1 and 
> Value!=new.Value) IS NOT NULL)
> BEGIN
>   UPDATE Test set Group_Marker=(select Group_Marker+1 from Test where 
> id=new.id-1) where id=new.id;
> END;
> INSERT INTO "Test" VALUES(1,'D',0);
> INSERT INTO "Test" VALUES(2,'X',0);
> INSERT INTO "Test" VALUES(3,'X',0);
> INSERT INTO "Test" VALUES(4,'X',0);
> INSERT INTO "Test" VALUES(5,'A',0);
> INSERT INTO "Test" VALUES(6,'B',0);
> INSERT INTO "Test" VALUES(7,'X',0);
> SELECT * FROM Test;
>
> You'll see that # 7 gets a new Group_Marker instead of repeating group#2.
>
>
> 1|D|1
> 2|X|2
> 3|X|2
> 4|X|2
> 5|A|3
> 6|B|4
> 7|X|5
>
>
> Michael D. Black
> Senior Scientist
> Advanced Analytics Directorate
> Advanced GEOINT Solutions Operating Unit
> Northrop Grumman Information Systems
>
> ________________________________________
> From: sqlite-users-boun...@sqlite.org [sqlite-users-boun...@sqlite.org] on 
> behalf of Bart Smissaert [bart.smissa...@gmail.com]
> Sent: Tuesday, October 16, 2012 5:45 PM
> To: General Discussion of SQLite Database
> Subject: EXT :Re: [sqlite] find sequential groups
>
> Thanks, will try that.
> Yes, the ID field is an integer primary key autoincrement.
> Still running the old sql with concatenation. Looks I may need
> to kill that.
>
> RBS
>
> On Tue, Oct 16, 2012 at 11:38 PM, Igor Tandetnik <itandet...@mvps.org> wrote:
>> On 10/16/2012 6:29 PM, Bart Smissaert wrote:
>>>
>>> Actually, it really is slow, made worse by the fact that there is not
>>> one grouping
>>> field (value in my example), but three. I am running your SQL now,
>>> concatenating
>>> these 3 fields, but still running and looks will be a long time.
>>> Will have to improve it with indexes and maybe avoiding the concatenation.
>>
>>
>> This would avoid concatenation:
>>
>>
>> update MyTable set Group_Marker = (
>>   select count(*) from MyTable t1
>>   where t1.ID <= MyTable.ID and not (
>>     select (t2.Value1=t1.Value1 and t2.Value2=t1.Value2 and
>> t2.Value3=t1.Value3)
>>
>>     from MyTable t2 where t2.ID < t1.ID
>>     order by t2.ID desc limit 1
>>   )
>> );
>>
>> The only index that would be helful is one on ID, which I suspect you might
>> already have.
>>
>> --
>> Igor Tandetnik
>>
>> _______________________________________________
>> sqlite-users mailing list
>> sqlite-users@sqlite.org
>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to