Clemens,

This is wonderful... I have no clue how it works, but it works.
this "w2" table you are using, what is this and where do you get it from?

In any case, thanks for your help.

gert


2012/10/31 Clemens Ladisch <clem...@ladisch.de>

> Gert Van Assche wrote:
> > I have a table like this one:
> >
> > CREATE TABLE [WORLD] ([Continent] , [Region] , [Country] , [TreeNode]
> CHAR);
> > insert into [WORLD] values('America', null, null, '1');
> > insert into [WORLD] values('America', 'North', null, '1.1');
> > insert into [WORLD] values('America', 'Central', null, '1.2');
> > insert into [WORLD] values('America', 'South', null, '1.3');
> > insert into [WORLD] values('Europe', null, null, '2');
> > insert into [WORLD] values('Europe', 'West', null, '2.1');
> > insert into [WORLD] values('Europe', 'Central', null, '2.2');
> > insert into [WORLD] values('Europe', 'East', null, '2.3');
> > insert into [WORLD] values('America', 'North', 'USA', '1.1.1');
> > insert into [WORLD] values('America', 'Central', 'Honduras', '1.2.1');
> > insert into [WORLD] values('America', 'South', 'Peru', '1.3.1');
> > insert into [WORLD] values('America', 'South', 'Brasil', '1.3.2');
> > insert into [WORLD] values('Europe', 'West', 'Spain', '2.1.1');
> > insert into [WORLD] values('Europe', 'West', 'France', '2.1.2');
> > insert into [WORLD] values('Europe', 'Central', 'Romania', '2.2.1');
> > insert into [WORLD] values('Europe', 'East', 'Estonia', '2.3.1');
> > insert into [WORLD] values('Asia', 'East', 'Japan', '3.1.1');
> > insert into [WORLD] values('Asia', 'East', 'Korea', '3.1.2');
> > insert into [WORLD] values('Asia', 'West', 'India', '3.2.1');
> > insert into [WORLD] values('Africa', 'North', 'Egypt', '4.1.1');
> >
> > But I would like to generate the TreeNode fields automatically.
> > Is there a way I can do this in SQL?
>
> This data has no indication that the order of continents is
> America - Europe - Asia - Africa, or of the other columns' orderings.
>
> You could try something like this, which uses alphabetical order instead:
>
> UPDATE World
> SET TreeNode = CAST((SELECT COUNT(DISTINCT Continent)
>                      FROM World w2
>                      WHERE w2.Continent <= World.Continent) AS TEXT);
>
> UPDATE World
> SET TreeNode = TreeNode || '.' ||
>                (SELECT COUNT(DISTINCT Region)
>                 FROM World w2
>                 WHERE w2.Continent = World.Continent AND
>                       w2.Region <= World.Region)
> WHERE Region IS NOT NULL;
>
> UPDATE World
> SET TreeNode = TreeNode || '.' ||
>                (SELECT COUNT(DISTINCT Country)
>                 FROM World w2
>                 WHERE w2.Continent = World.Continent AND
>                       w2.Region = World.Region AND
>                       w2.Country <= World.Country)
> WHERE Region IS NOT NULL AND
>       Country IS NOT NULL;
>
>
> Regards,
> Clemens
> _______________________________________________
> 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