我有两个表:tbl_recipe和tbl_directions。每个“方向”都有一个外键,这是配方的主键。
最后,我希望能够显示如下所示的json结果(为简洁起见,省略了其他道具):
[
{
"id": 1,
"name": "Sandwich",
...
"directions": {
[
{
...
"recipe_id": 1,
"directions": "Get bread"
},
{
...
"recipe_id": 1,
"directions": "Spread"
}
]
}
},
{
"id": 2,
"name": "Fried Eggs",
...
"directions": {
[
{
...
"recipe_id": 2,
"directions": "Heat pan"
},
{
...
"recipe_id": 2,
"directions": "Crack eggs"
}
]
}
}
]
我能想到的一件事是“从tbl_recipe中选择*”,然后遍历结果并查询每个结果的方向。我几乎肯定要有一种更好/适当的方法来完成此操作。
tbl_recipe
id:1,名称:三明治
id:2,名称:煎蛋
tbl_directions
id:1,recipe_id:1,路线:拿面包
id:2,recipe_id:1,路线:传播
id:3,recipe_id:2,用法:热锅
id:4,recipe_id:2,方向:打破鸡蛋
谢谢!
答案 0 :(得分:1)
您必须使用左联接查询结果,并对您提到的重复行的结果进行后处理。
select * from recipe r left join directions d on r.id = d.recipe_id
执行查询并在后期处理中获取结果后,尝试维护配方图与方向图列表(如Map)并将对应于配方的方向添加到列表中
我也建议您看一下MongoDB之类的文档数据存储,因为您的数据集似乎非常接近文档存储的用例
希望这会有所帮助!