Re: [SQL] LTREE extension and "order by"

2011-07-21 Thread Ivan Polak
Hi, thank you for your answer, please can You send me complete select
command how to convert ltree column to integer[] and use it to order
by.

thanks

Ivan

2011/7/21 pasman pasmański :
> Hi.
>
> You should convert path to integer[].
>
> 2011/7/20, Ivan Polak :
>> Hi,
>>
>> in postgreSQL (with LTREE extension) database I have the following
>> table "comments":
>>
>> id BIGINT /* id */
>> article_id BIGINT /*article-id */
>> parent_id BIGINT
>> comment TEXT
>> path LTREE
>> level INTEGER /* level */
>>
>> with the following rows:
>>
>> id article_id comment parent_id path level
>> 1 1  1 1
>> 2 1  1 1.2 2
>> 3 1  2 1.2.3 3
>> 4 1  2 1.4 2
>> 5 1  4 1.4.5 3
>> 6 1  6 1
>> 7 1  6 6.7 2
>> 8 1  6 6.8 2
>> 9 1  9 1
>> 10 1  10 1
>> 11 1  5 1.4.5.11 4
>>
>> and I need to select complete tree (with correct order of comments).
>>
>> SELECT * from comments where article_id = 2 order by 
>>
>> when I used:
>>
>> SELECT * from comments where article_id = 2 order by path
>>
>> the result is:
>>
>> id comment path
>> 1  1
>> 2  1.2
>> 3  1.2.3
>> 4  1.4
>> 5  1.4.5
>> 11  1.4.5.11
>> 10  10
>> 6  6
>> 7  6.7
>> 8  6.8
>> 9  9
>>
>> BUT, it is wrong, because comment with id = 10 is after comment with id=11
>>
>> (i know, this is correct, because ordering by column PATH [as TEXT],
>> and 10 is 'after' 1.4.5.11)
>>
>> , but I need :
>>
>> id comment path
>> 1  1
>> 2  1.2
>> 3  1.2.3
>> 4  1.4
>> 5  1.4.5
>> 11  1.4.5.11
>> 6  6
>> 7  6.7
>> 8  6.8
>> 9  9
>> 10  10
>>
>> thanks
>>
>> Ivan
>>
>> --
>> Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
>> To make changes to your subscription:
>> http://www.postgresql.org/mailpref/pgsql-sql
>>
>
>
> --
> 
> pasman
>
> --
> Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-sql
>

-- 
Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-sql


Re: [SQL] LTREE extension and "order by"

2011-07-21 Thread Carla
Try it:
select * from comments where article_id = 2 order by
string_to_array(path::text,'.')::integer[];

2011/7/21 Ivan Polak 

> Hi, thank you for your answer, please can You send me complete select
> command how to convert ltree column to integer[] and use it to order
> by.
>
> thanks
>
> Ivan
>
> 2011/7/21 pasman pasmański :
> > Hi.
> >
> > You should convert path to integer[].
> >
> > 2011/7/20, Ivan Polak :
> >> Hi,
> >>
> >> in postgreSQL (with LTREE extension) database I have the following
> >> table "comments":
> >>
> >> id BIGINT /* id */
> >> article_id BIGINT /*article-id */
> >> parent_id BIGINT
> >> comment TEXT
> >> path LTREE
> >> level INTEGER /* level */
> >>
> >> with the following rows:
> >>
> >> id article_id comment parent_id path level
> >> 1 1  1 1
> >> 2 1  1 1.2 2
> >> 3 1  2 1.2.3 3
> >> 4 1  2 1.4 2
> >> 5 1  4 1.4.5 3
> >> 6 1  6 1
> >> 7 1  6 6.7 2
> >> 8 1  6 6.8 2
> >> 9 1  9 1
> >> 10 1  10 1
> >> 11 1  5 1.4.5.11 4
> >>
> >> and I need to select complete tree (with correct order of comments).
> >>
> >> SELECT * from comments where article_id = 2 order by 
> >>
> >> when I used:
> >>
> >> SELECT * from comments where article_id = 2 order by path
> >>
> >> the result is:
> >>
> >> id comment path
> >> 1  1
> >> 2  1.2
> >> 3  1.2.3
> >> 4  1.4
> >> 5  1.4.5
> >> 11  1.4.5.11
> >> 10  10
> >> 6  6
> >> 7  6.7
> >> 8  6.8
> >> 9  9
> >>
> >> BUT, it is wrong, because comment with id = 10 is after comment with
> id=11
> >>
> >> (i know, this is correct, because ordering by column PATH [as TEXT],
> >> and 10 is 'after' 1.4.5.11)
> >>
> >> , but I need :
> >>
> >> id comment path
> >> 1  1
> >> 2  1.2
> >> 3  1.2.3
> >> 4  1.4
> >> 5  1.4.5
> >> 11  1.4.5.11
> >> 6  6
> >> 7  6.7
> >> 8  6.8
> >> 9  9
> >> 10  10
> >>
> >> thanks
> >>
> >> Ivan
> >>
> >> --
> >> Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
> >> To make changes to your subscription:
> >> http://www.postgresql.org/mailpref/pgsql-sql
> >>
> >
> >
> > --
> > 
> > pasman
> >
> > --
> > Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
> > To make changes to your subscription:
> > http://www.postgresql.org/mailpref/pgsql-sql
> >
>
> --
> Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-sql
>
>


Re: [SQL] LTREE extension and "order by"

2011-07-21 Thread Ivan Polak
hi, thank you, but there is error:

ERROR:  cannot cast type ltree to text
LINE 1: ... article_id = 2 order by string_to_array(path::text,'.'):...

Ivan

On 21 July 2011 17:25, Carla  wrote:
> Try it:
> select * from comments where article_id = 2 order by
> string_to_array(path::text,'.')::integer[];
>
> 2011/7/21 Ivan Polak 
>>
>> Hi, thank you for your answer, please can You send me complete select
>> command how to convert ltree column to integer[] and use it to order
>> by.
>>
>> thanks
>>
>> Ivan
>>
>> 2011/7/21 pasman pasmański :
>> > Hi.
>> >
>> > You should convert path to integer[].
>> >
>> > 2011/7/20, Ivan Polak :
>> >> Hi,
>> >>
>> >> in postgreSQL (with LTREE extension) database I have the following
>> >> table "comments":
>> >>
>> >> id BIGINT /* id */
>> >> article_id BIGINT /*article-id */
>> >> parent_id BIGINT
>> >> comment TEXT
>> >> path LTREE
>> >> level INTEGER /* level */
>> >>
>> >> with the following rows:
>> >>
>> >> id article_id comment parent_id path level
>> >> 1 1  1 1
>> >> 2 1  1 1.2 2
>> >> 3 1  2 1.2.3 3
>> >> 4 1  2 1.4 2
>> >> 5 1  4 1.4.5 3
>> >> 6 1  6 1
>> >> 7 1  6 6.7 2
>> >> 8 1  6 6.8 2
>> >> 9 1  9 1
>> >> 10 1  10 1
>> >> 11 1  5 1.4.5.11 4
>> >>
>> >> and I need to select complete tree (with correct order of comments).
>> >>
>> >> SELECT * from comments where article_id = 2 order by 
>> >>
>> >> when I used:
>> >>
>> >> SELECT * from comments where article_id = 2 order by path
>> >>
>> >> the result is:
>> >>
>> >> id comment path
>> >> 1  1
>> >> 2  1.2
>> >> 3  1.2.3
>> >> 4  1.4
>> >> 5  1.4.5
>> >> 11  1.4.5.11
>> >> 10  10
>> >> 6  6
>> >> 7  6.7
>> >> 8  6.8
>> >> 9  9
>> >>
>> >> BUT, it is wrong, because comment with id = 10 is after comment with
>> >> id=11
>> >>
>> >> (i know, this is correct, because ordering by column PATH [as TEXT],
>> >> and 10 is 'after' 1.4.5.11)
>> >>
>> >> , but I need :
>> >>
>> >> id comment path
>> >> 1  1
>> >> 2  1.2
>> >> 3  1.2.3
>> >> 4  1.4
>> >> 5  1.4.5
>> >> 11  1.4.5.11
>> >> 6  6
>> >> 7  6.7
>> >> 8  6.8
>> >> 9  9
>> >> 10  10
>> >>
>> >> thanks
>> >>
>> >> Ivan
>> >>
>> >> --
>> >> Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
>> >> To make changes to your subscription:
>> >> http://www.postgresql.org/mailpref/pgsql-sql
>> >>
>> >
>> >
>> > --
>> > 
>> > pasman
>> >
>> > --
>> > Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
>> > To make changes to your subscription:
>> > http://www.postgresql.org/mailpref/pgsql-sql
>> >
>>
>> --
>> Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
>> To make changes to your subscription:
>> http://www.postgresql.org/mailpref/pgsql-sql
>>
>
>

-- 
Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-sql


Re: [SQL] LTREE extension and "order by"

2011-07-21 Thread Carla
Hmm, I'm using PostgreSQL 8.4 and it worked.
Try to use the function ltree2text instead of ::text.
select * from comments where article_id = 2 order by
cast(string_to_array(ltree2text(path),'.') as integer[]);

2011/7/21 Ivan Polak 

> hi, thank you, but there is error:
>
> ERROR:  cannot cast type ltree to text
> LINE 1: ... article_id = 2 order by string_to_array(path::text,'.'):...
>
> Ivan
>
> On 21 July 2011 17:25, Carla  wrote:
> > Try it:
> > select * from comments where article_id = 2 order by
> > string_to_array(path::text,'.')::integer[];
> >
> > 2011/7/21 Ivan Polak 
> >>
> >> Hi, thank you for your answer, please can You send me complete select
> >> command how to convert ltree column to integer[] and use it to order
> >> by.
> >>
> >> thanks
> >>
> >> Ivan
> >>
> >> 2011/7/21 pasman pasmański :
> >> > Hi.
> >> >
> >> > You should convert path to integer[].
> >> >
> >> > 2011/7/20, Ivan Polak :
> >> >> Hi,
> >> >>
> >> >> in postgreSQL (with LTREE extension) database I have the following
> >> >> table "comments":
> >> >>
> >> >> id BIGINT /* id */
> >> >> article_id BIGINT /*article-id */
> >> >> parent_id BIGINT
> >> >> comment TEXT
> >> >> path LTREE
> >> >> level INTEGER /* level */
> >> >>
> >> >> with the following rows:
> >> >>
> >> >> id article_id comment parent_id path level
> >> >> 1 1  1 1
> >> >> 2 1  1 1.2 2
> >> >> 3 1  2 1.2.3 3
> >> >> 4 1  2 1.4 2
> >> >> 5 1  4 1.4.5 3
> >> >> 6 1  6 1
> >> >> 7 1  6 6.7 2
> >> >> 8 1  6 6.8 2
> >> >> 9 1  9 1
> >> >> 10 1  10 1
> >> >> 11 1  5 1.4.5.11 4
> >> >>
> >> >> and I need to select complete tree (with correct order of comments).
> >> >>
> >> >> SELECT * from comments where article_id = 2 order by 
> >> >>
> >> >> when I used:
> >> >>
> >> >> SELECT * from comments where article_id = 2 order by path
> >> >>
> >> >> the result is:
> >> >>
> >> >> id comment path
> >> >> 1  1
> >> >> 2  1.2
> >> >> 3  1.2.3
> >> >> 4  1.4
> >> >> 5  1.4.5
> >> >> 11  1.4.5.11
> >> >> 10  10
> >> >> 6  6
> >> >> 7  6.7
> >> >> 8  6.8
> >> >> 9  9
> >> >>
> >> >> BUT, it is wrong, because comment with id = 10 is after comment with
> >> >> id=11
> >> >>
> >> >> (i know, this is correct, because ordering by column PATH [as TEXT],
> >> >> and 10 is 'after' 1.4.5.11)
> >> >>
> >> >> , but I need :
> >> >>
> >> >> id comment path
> >> >> 1  1
> >> >> 2  1.2
> >> >> 3  1.2.3
> >> >> 4  1.4
> >> >> 5  1.4.5
> >> >> 11  1.4.5.11
> >> >> 6  6
> >> >> 7  6.7
> >> >> 8  6.8
> >> >> 9  9
> >> >> 10  10
> >> >>
> >> >> thanks
> >> >>
> >> >> Ivan
> >> >>
> >> >> --
> >> >> Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
> >> >> To make changes to your subscription:
> >> >> http://www.postgresql.org/mailpref/pgsql-sql
> >> >>
> >> >
> >> >
> >> > --
> >> > 
> >> > pasman
> >> >
> >> > --
> >> > Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
> >> > To make changes to your subscription:
> >> > http://www.postgresql.org/mailpref/pgsql-sql
> >> >
> >>
> >> --
> >> Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
> >> To make changes to your subscription:
> >> http://www.postgresql.org/mailpref/pgsql-sql
> >>
> >
> >
>
> --
> Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-sql
>
>


Re: [SQL] LTREE extension and "order by"

2011-07-21 Thread Pavel Stehule
2011/7/21 Carla :
> Hmm, I'm using PostgreSQL 8.4 and it worked.
> Try to use the function ltree2text instead of ::text.
> select * from comments where article_id = 2 order by
> cast(string_to_array(ltree2text(path),'.') as integer[]);
>

this does not work in older versions

you can use http://www.pgsql.cz/index.php/PostgreSQL_SQL_Tricks#Cast_to_varchar

Regards

Pavel Stehule

-- 
Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-sql


Re: [SQL] LTREE extension and "order by"

2011-07-21 Thread Ivan Polak
HI,
thanks, thanks Carla, your solution is OK :-) (i`m using PostgreSQL
8.2, so Pavel is right).

Ivan

On 21 July 2011 18:28, Carla  wrote:
> Hmm, I'm using PostgreSQL 8.4 and it worked.
> Try to use the function ltree2text instead of ::text.
> select * from comments where article_id = 2 order by
> cast(string_to_array(ltree2text(path),'.') as integer[]);
>
> 2011/7/21 Ivan Polak 
>>
>> hi, thank you, but there is error:
>>
>> ERROR:  cannot cast type ltree to text
>> LINE 1: ... article_id = 2 order by string_to_array(path::text,'.'):...
>>
>> Ivan
>>
>> On 21 July 2011 17:25, Carla  wrote:
>> > Try it:
>> > select * from comments where article_id = 2 order by
>> > string_to_array(path::text,'.')::integer[];
>> >
>> > 2011/7/21 Ivan Polak 
>> >>
>> >> Hi, thank you for your answer, please can You send me complete select
>> >> command how to convert ltree column to integer[] and use it to order
>> >> by.
>> >>
>> >> thanks
>> >>
>> >> Ivan
>> >>
>> >> 2011/7/21 pasman pasmański :
>> >> > Hi.
>> >> >
>> >> > You should convert path to integer[].
>> >> >
>> >> > 2011/7/20, Ivan Polak :
>> >> >> Hi,
>> >> >>
>> >> >> in postgreSQL (with LTREE extension) database I have the following
>> >> >> table "comments":
>> >> >>
>> >> >> id BIGINT /* id */
>> >> >> article_id BIGINT /*article-id */
>> >> >> parent_id BIGINT
>> >> >> comment TEXT
>> >> >> path LTREE
>> >> >> level INTEGER /* level */
>> >> >>
>> >> >> with the following rows:
>> >> >>
>> >> >> id article_id comment parent_id path level
>> >> >> 1 1  1 1
>> >> >> 2 1  1 1.2 2
>> >> >> 3 1  2 1.2.3 3
>> >> >> 4 1  2 1.4 2
>> >> >> 5 1  4 1.4.5 3
>> >> >> 6 1  6 1
>> >> >> 7 1  6 6.7 2
>> >> >> 8 1  6 6.8 2
>> >> >> 9 1  9 1
>> >> >> 10 1  10 1
>> >> >> 11 1  5 1.4.5.11 4
>> >> >>
>> >> >> and I need to select complete tree (with correct order of comments).
>> >> >>
>> >> >> SELECT * from comments where article_id = 2 order by 
>> >> >>
>> >> >> when I used:
>> >> >>
>> >> >> SELECT * from comments where article_id = 2 order by path
>> >> >>
>> >> >> the result is:
>> >> >>
>> >> >> id comment path
>> >> >> 1  1
>> >> >> 2  1.2
>> >> >> 3  1.2.3
>> >> >> 4  1.4
>> >> >> 5  1.4.5
>> >> >> 11  1.4.5.11
>> >> >> 10  10
>> >> >> 6  6
>> >> >> 7  6.7
>> >> >> 8  6.8
>> >> >> 9  9
>> >> >>
>> >> >> BUT, it is wrong, because comment with id = 10 is after comment with
>> >> >> id=11
>> >> >>
>> >> >> (i know, this is correct, because ordering by column PATH [as TEXT],
>> >> >> and 10 is 'after' 1.4.5.11)
>> >> >>
>> >> >> , but I need :
>> >> >>
>> >> >> id comment path
>> >> >> 1  1
>> >> >> 2  1.2
>> >> >> 3  1.2.3
>> >> >> 4  1.4
>> >> >> 5  1.4.5
>> >> >> 11  1.4.5.11
>> >> >> 6  6
>> >> >> 7  6.7
>> >> >> 8  6.8
>> >> >> 9  9
>> >> >> 10  10
>> >> >>
>> >> >> thanks
>> >> >>
>> >> >> Ivan
>> >> >>
>> >> >> --
>> >> >> Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
>> >> >> To make changes to your subscription:
>> >> >> http://www.postgresql.org/mailpref/pgsql-sql
>> >> >>
>> >> >
>> >> >
>> >> > --
>> >> > 
>> >> > pasman
>> >> >
>> >> > --
>> >> > Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
>> >> > To make changes to your subscription:
>> >> > http://www.postgresql.org/mailpref/pgsql-sql
>> >> >
>> >>
>> >> --
>> >> Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
>> >> To make changes to your subscription:
>> >> http://www.postgresql.org/mailpref/pgsql-sql
>> >>
>> >
>> >
>>
>> --
>> Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
>> To make changes to your subscription:
>> http://www.postgresql.org/mailpref/pgsql-sql
>>
>
>

-- 
Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-sql


[SQL] Need to return one field for multiple Rows

2011-07-21 Thread Ozer, Pam
I have the following query

 

Select PubArticleId, PubArticlePageXML

from PubarticlePageXml x

Inner Join Pubarticlepage p on x.pubarticlepageid=p.pubarticlepageid 

where pubarticleid=188321

 

Which Returns

PubArticleId(Integer)PubArticlePageXML(Text)

188321  fdfaldkjf

188321  afdaf

188321  adfafd

188321  afddfadfa

 

 

 

I want it to return one row

 

188321 fdfaldkjf afdaf adfafd afddfadfa

 

 

Any thoughts On how I can do this?

 

Thanks

 

Pam Ozer



Re: [SQL] Need to return one field for multiple Rows

2011-07-21 Thread Ozer, Pam
Never Mind Ifigured it out.  I just need to use agg_array

 

From: Ozer, Pam 
Sent: Thursday, July 21, 2011 4:09 PM
To: pgsql-sql@postgresql.org
Subject: Need to return one field for multiple Rows

 

I have the following query

 

Select PubArticleId, PubArticlePageXML

from PubarticlePageXml x

Inner Join Pubarticlepage p on x.pubarticlepageid=p.pubarticlepageid 

where pubarticleid=188321

 

Which Returns

PubArticleId(Integer)PubArticlePageXML(Text)

188321  fdfaldkjf

188321  afdaf

188321  adfafd

188321  afddfadfa

 

 

 

I want it to return one row

 

188321 fdfaldkjf afdaf adfafd afddfadfa

 

 

Any thoughts On how I can do this?

 

Thanks

 

Pam Ozer