sql - PostgreSQL JOIN with array type with array elements -
i have 2 tables tags , users
table name: tags
| id | name | | 1 | 1 | | 2 | 2 | | 3 | 3 | | 4 | 4 | | 5 | 5 |
table name: users
| id | fname | tags | | 1 | ram | {1,5} | | 2 | sham | {1,2,3,4} | | 3 | bham | {1,3} | | 4 | kam | {5,2} | | 5 | lam | {4,2} |
expected output:
| id | fname | tags | | 1 | ram | one, 5 | | 2 | sham | one, two, three, 4 | | 3 | bham | one, 3 | | 4 | kam | five, 2 | | 5 | lam | four, 2 |
trial-1 : using join
select i.id, i.fname, i.tags, j.name users bring together tags j on j.id = any(i.cached_tag_ids) limit 1
result:
| id | fname | tags | | 1 | ram | 1 | | 1 | ram | 5 |
expected:
| id | fname | tags | | 1 | ram | one, 5 |
your tags
should have integer[]
type.
create table users( id serial, fname varchar(50), tags integer[] );
then,
select i.id, i.fname, array_agg(j.name) users left bring together tags j on j.id = any(i.tags) grouping fname,i.id order id
should work. see sqlfiddle
this question may help.
sql arrays postgresql join
No comments:
Post a Comment