获取汇总查询结果

时间:2019-03-10 19:18:30

标签: mysql

我有两个表: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,方向:打破鸡蛋

谢谢!

1 个答案:

答案 0 :(得分:1)

您必须使用左联接查询结果,并对您提到的重复行的结果进行后处理。

select * from recipe r left join directions d on r.id = d.recipe_id

执行查询并在后期处理中获取结果后,尝试维护配方图与方向图列表(如Map)并将对应于配方的方向添加到列表中

我也建议您看一下MongoDB之类的文档数据存储,因为您的数据集似乎非常接近文档存储的用例

希望这会有所帮助!