【发布时间】:2015-04-17 06:09:25
【问题描述】:
我有PostgreSQL函数(树形结构),我需要将输出转换为json树格式。
我的PostgreSQL 函数
RETURN QUERY
WITH RECURSIVE manger_hierarchy(e_id,e_name,m_name,m_id) AS
(
SELECT
e.emp_id,e.emp_name,
m.emp_name AS man_name,e.emp_man_id
FROM emp_det e
LEFT JOIN emp_det m ON e.emp_man_id=m.emp_id
WHERE e.emp_id = id
UNION
SELECT
rp.emp_id,rp.emp_name,
mh.e_name AS manager,rp.emp_man_id
FROM manger_hierarchy mh
INNER JOIN emp_det rp ON mh.e_id = rp.emp_man_id
)
SELECT h.e_id,h.e_name,h.m_name,h.m_id
FROM manger_hierarchy h;
而我的php 脚本是
header('Content-Type: application/json');
$dbconn=pg_connect('host=localhost port=5432 dbname=test1 user=someuser password=somepass');
$x=$_GET['id'];
$result=pg_query($dbconn,"SELECT * FROM employe_manager_details($x)");
$y=pg_fetch_all($result);
echo json_encode($y, JSON_PRETTY_PRINT);
pg_close($dbconn);
我目前的结果
[
{
"e_id": "4",
"e_name": "john",
"e_manager": "steve",
"e_man_id": "2"
},
{
"e_id": "8",
"e_name": "jake",
"e_manager": "john",
"e_man_id": "4"
},
{
"e_id": "9",
"e_name": "wilson",
"e_manager": "john",
"e_man_id": "4"
}
]
期待结果
[
{
"e_id": "4",
"e_name": "john",
"e_manager": "steve",
"e_man_id": "2"
},
{
"e_id": "8",
"e_name": "jake",
"e_manager": "john",
"e_man_id": "4"
},
{
"e_id": "9",
"e_name": "wilson",
"e_manager": "john",
"e_man_id": "4"
}
]
【问题讨论】:
-
两者的结果有什么不同,不是一样
-
您能否指出您当前和预期结果的确切差异在哪里?
-
我需要 joson 树输出.. e_id 4 有两个孩子.. 孩子们应该是有意的
标签: php json postgresql