Lets say we have three tables
category_level_one
| id | cat_name |
|---|---|
| 1 | Physics |
| 2 | Chemistry |
category_level_two
| id | sub_cat_name | cat_l1_id |
|---|---|---|
| 1 | Organic | 2 |
| 2 | Inorganic | 2 |
| 3 | Physical | 2 |
| 4 | Mechanics | 1 |
| 5 | Electricity and Magnetism | 1 |
category_level_three
| id | sub_cat_name | cat_l1_id | cat_l2_id |
|---|---|---|---|
| 1 | Atoms and Molecules | 2 | 3 |
| 2 | Chemical Equilibrium | 2 | 3 |
| 3 | Alcohols | 2 | 1 |
| 4 | Ethers | 2 | 1 |
| 5 | P Block Element | 2 | 2 |
| 6 | Kinematics | 1 | 4 |
| 7 | Work Power and Energy | 1 | 4 |
| 9 | Current Electricity | 1 | 5 |
SELECT category_level_two.id, category_level_two.sub_cat_name,
JSON_OBJECT("id" , category_level_one.id, 'name', category_level_one.cat_name ) AS "categotyOne",
(select json_arrayagg(JSON_OBJECT(
'id', category_level_three.id,
'name', category_level_three.sub_sub_cat_name))
from category_level_two
INNER JOIN category_level_three
ON category_level_three.cat_l2_id = category_level_two.id
WHERE category_level_two.id = 1) as "categotyThree",
FROM category_level_two
JOIN category_level_one
ON category_level_two.cat_l1_id = category_level_one.id
WHERE category_level_two.id WHERE = 1
It will give data as
| id | name | categotyOne | categotyThree |
|---|---|---|---|
| 1 | Organic | { "id" : 1 , "name" : "Chemistry" } | [ {...} , {...}] |
How can I get the multiple unique rows for category_l2 with each categotyThree list that belongs to that catl2 ?