Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 按并集结果分组_Sql_Postgresql - Fatal编程技术网

Sql 按并集结果分组

Sql 按并集结果分组,sql,postgresql,Sql,Postgresql,我有两张桌子:“家长”和“孩子” 儿童: ID | NAME | PARENT_ID -------------------------------- 1 | Child 1 | 1 2 | Child 2 | 1 3 | Child 3 | 1 4 | Child 4 | 1 5 | Child 5 | 1 6 | Child 6 | 2 7 |

我有两张桌子:“家长”和“孩子”

儿童:

ID  |   NAME        | PARENT_ID
--------------------------------
1   |   Child 1     |   1
2   |   Child 2     |   1
3   |   Child 3     |   1
4   |   Child 4     |   1
5   |   Child 5     |   1
6   |   Child 6     |   2
7   |   Child 7     |   2
8   |   Child 8     |   2
9   |   Child 9     |   2
10  |   Child 10    |   2
11  |   Child 11    |   2
12  |   Child 12    |   2
13  |   Child 13    |   2
14  |   Child 14    |   2
15  |   Child 15    |   3
16  |   Child 16    |   3
17  |   Child 17    |   3
家长:

ID  |   NAME        |   UNIQUE_ID
----------------------------------
1   |   PARENT 1    |   uniq-001
2   |   PARENT 2    |   uniq-002
3   |   PARENT 3    |   uniq-003
我想合并这两个表,得到这样的结果

ID  |   NAME        |   PARENT_ID
---------------------------------
1   |   parent 1    |   1
1   |   child 1     |   1
2   |   child 2     |   1
2   |   parent 2    |   2
6   |   child 6     |   2
7   |   child 7     |   2
12  |   child 12    |   2
13  |   child 13    |   2
14  |   child 14    |   2
3   |   parent 3    |   3
15  |   child 15    |   3
我的sql代码看起来像

select * from 
(
SELECT 
    id, 
    name,
    id as parent_id
from 
    parent
UNION all
SELECT 
    id, 
    name,
    parent_id
from 
    child
) t
group by 3, 1, 2
我不知道为什么,但结果没有按父ID分组。
我如何按家长ID将此查询分组?

恐怕问题还不够清楚。 这里有两条关于启动的建议

都都






如果显式指定列,是否有效?(
group by parent_id,id,name
)你只需要一个
订单吗
select      id
           ,name
           ,unique_id

from        (           select 2,id,parent_id,name,null      from child
            union all   select 1,id,id       ,name,unique_id from parent
            ) t (source_order,id,pid,name,unique_id)

order by    pid
           ,source_order
           ,id
;
id      name        unique_id
--      ----        ---------
1       PARENT 1    uniq-001
1       Child 1     
2       Child 2     
3       Child 3     
4       Child 4     
5       Child 5     
2       PARENT 2    uniq-002
6       Child 6     
7       Child 7     
8       Child 8     
9       Child 9     
10      Child 10    
11      Child 11    
12      Child 12    
13      Child 13    
14      Child 14    
3       PARENT 3    uniq-003
15      Child 15    
16      Child 16    
17      Child 17   
select      p.*
           ,(select array_agg ('(' || c.id || ') ' || c.name order by c.id) from child as c where c.parent_id = p.id)   as children

from        parent as p

order by    p.id
;
id  name        unique_id   childrn
--  ----        ---------   -------
1   PARENT 1    uniq-001    (1) Child 1 ,(2) Child 2 ,(3) Child 3 ,(4) Child 4 ,(5) Child 5 
2   PARENT 2    uniq-002    (6) Child 6 ,(7) Child 7 ,(8) Child 8 ,(9) Child 9 ,(10) Child 10,(11) Child 11,(12) Child 12,(13) Child 13,(14) Child 14
3   PARENT 3    uniq-003    (15) Child 15,(16) Child 16,(17) Child 17