0

I have the following DB structure (I know, its not the greatest structure but it is what it is):

users

|   id   | company  |
| -------| -------- |
| user1  | company1 |
| user2  | company2 |

------

users_companies

| user_id| company  |
| -------| -------- |
| user1  | company3 |
| user1  | company4 |
| user2  | company5 |
| user2  | company6 |

I need to write a query that will return the following result set

| user1  | company1 |
| user1  | company3 |
| user1  | company4 |
| user1  | company1,company3,company4 |
| user2  | company2 |
| user2  | company5 |
| user2  | company6 |
| user2  | company2,company5,company6 |

As you can see for each user it will individually list out each company and also create an aggregate row of all their companies they are assigned to. I have this working in a redshift query but I'm stuck on how to get this same result using MySQL. Any help would be much appreciated!

Here is the working redshift query that I have.

with u as (
  select * 
  from users
  union all
  select * 
  from users_companies
)
select id, company
from (
  select id, Company, 1 seq
  from u
  union all
  select id, string_agg(company, ','), 2 seq
  from u
  group by Id, seq
)t
order by Id, seq, company;
Taylor Foster
  • 1,103
  • 1
  • 11
  • 24

0 Answers0