请按照以下步骤操作:
- Create table and insert record.
- Get JSON type for array value
- Use "JSON_CONTAINS" for find MLM chain
在这里解释一下:
create table users(id int, name varchar(50));
create table user_tree(id int, user_id int, tree json );
create table orders(id int, amount int, user_id int);
insert into users values(1, 'Robin');
insert into users values(2, 'Edward');
insert into users values(3 , 'Donald');
insert into users values(4 , 'Julie');
select * from users;
insert into user_tree values(1, 1 , '["2","3","4"]');
insert into user_tree values(2 , 2 , '["3","4"]');
insert into user_tree values(3 , 3 , '["4"]');
insert into user_tree values(4 , 4 , '[]');
select * from user_tree;
insert into orders values(1 , 150 , 2);
insert into orders values(2 , 300 , 3);
insert into orders values(3 , 200 , 4);
insert into orders values(4 , 500 , 3);
select * from orders;
- 这里的最终查询:
SELECT u1.id, u1.user_id as user_id, sum(amount)
FROM user_tree u1
left outer join user_tree u2 on JSON_CONTAINS(u1.tree, concat('["', u2.user_id ,'"]'))
left outer join orders o1 on o1.user_id = u2.user_id
where u2.user_id
group by u1.id, u1.user_id
order by u1.id;
从此处LINK查找 SQL Fiddle 详细信息。