大佬教程收集整理的这篇文章主要介绍了PostgreSQL 请求 json_agg 重复结果,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我的 sql 请求有问题,看起来像这样
SELECT
Json_build_object('ID',u.id,'personnes_morale',Json_build_object('denomination',pm.denomination),'personne_physique',Json_build_object('nom_patronyme',pp.nom_patronymE),'representants',Json_agg(Json_build_object('name',r.Name)),'observations',Json_agg(Json_build_object('ID',o.ID))
)
FROM
dossIErs_entreprises u
left JOIN personnes_morales pm ON pm.numero_gestion = u.numero_gestion
left JOIN personnes_physiques pp ON pp.numero_gestion = u.numero_gestion
left JOIN representants r ON r.numero_gestion = u.numero_gestion
left JOIN observations o ON o.numero_gestion = u.numero_gestion
WHERE
u."numero_gestion" = '1955B08131'
GROUP BY
u.id,pp.ID,pm.ID
liMIT 1;
它应该给我这样的东西:
{
ID:'123',personne_morale:{denomination: 'test'},personne_physique:{nom_patronyme: 'Smith'},representants:[{name:'John'},{name:'Smith'}],observations:[{ID:'1'},{ID:'2'}]
}
但是因为我有两个 Json_agg(我只测试了一个代表并且效果很好)它返回给我类似的东西:
{
ID:'123',... <- *personne_morale*
... <- *personne_physique*
representants:[{name:'John'},{name:'John'},{name:'Smith'},{name:'Smith'}]
observations:[{ID:'1'},{ID:'1'}{ID:'2'},{ID:'2'}]
}
它重复了我的“代表”和“观察”结果,我不明白为什么
你有什么解决办法
提前致谢
这似乎是意料之中的,您只需通过执行 JOIN
即可获得笛卡尔积。
如果你想独立填充这些数组,我建议改用子查询:
SELECT
json_build_object('id',u.id,'personnes_morale',json_build_object('denomination',pm.denomination),'personne_physique',json_build_object('nom_patronyme',pp.nom_patronymE),'representants',(
SELECT json_agg(json_build_object('name',r.Name))
FROM representants r
WHERE r.numero_gestion = u.numero_gestion
),'observations',(
SELECT json_agg(json_build_object('id',o.id))
FROM observations o
WHERE o.numero_gestion = u.numero_gestion
)
)
FROM
dossiers_entreprises u
LEFT JOIN personnes_morales pm ON pm.numero_gestion = u.numero_gestion
LEFT JOIN personnes_physiques pp ON pp.numero_gestion = u.numero_gestion
WHERE
u."numero_gestion" = '1955B08131'
LIMIT 1;
(顺便说一句,为了避免下一个惊喜:您可能希望在子查询周围使用 COALESCE(…,'[]')
,@R_454_6607@找到行,它们将返回 NULL
而不是空数组)
以上是大佬教程为你收集整理的PostgreSQL 请求 json_agg 重复结果全部内容,希望文章能够帮你解决PostgreSQL 请求 json_agg 重复结果所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。