Mysql 获取聚合查询结果

Mysql 获取聚合查询结果,mysql,Mysql,我有两张桌子:tbl_食谱和tbl_说明。每个方向都有一个外键,它是配方的主键 最后,我希望能够显示一个json结果,该结果类似于为简洁起见省略的以下其他道具: [ { "id": 1, "name": "Sandwich", ... "directions": { [ { ... "recipe_id": 1, "directions": "Get bread"

我有两张桌子:tbl_食谱和tbl_说明。每个方向都有一个外键,它是配方的主键

最后,我希望能够显示一个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_配方中选择*,然后循环搜索结果并查询每个结果的方向。我几乎可以肯定的是,必须有一种更好/正确的方法来做到这一点

tbl_配方

身份证号码:1,姓名:三明治 身份证号码:2,姓名:煎蛋

tbl_方向

id:1,食谱\u id:1,说明:买面包 id:2,配方\u id:1,方向:摊铺

id:3,配方\ id:2,使用方法:热锅 id:4,食谱\u id:2,说明:打碎鸡蛋


谢谢

您可以使用左连接查询结果,并对重复行的结果进行后期处理,如您所述

从配方r中选择*在r.id=d.recipe\U id上左连接方向d

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

此外,我还建议您看看像MongoDB这样的文档数据存储,因为您的数据集似乎非常接近文档存储的用例


希望这有帮助

你会想要一个。谢谢@ChrisG。我的脑海中确实出现了一个连接,但随后我将得到多个重复的配方行。我是否应该对结果集进行一些后处理?您需要尽可能简短地提供示例表数据以及希望结果是什么样的。这样我们就可以建议一个合适的连接查询。SQL非常强大;我们的目标通常是以不需要后期处理的方式编写查询。至于结果,我在第一次发布时已经将其作为示例json结果包含在内。谢谢基本思想是:谢谢@aarish。这可能是一种方法,但上面评论中的ChrisG表示,可能有一种方法可以避免后期处理,让SQL完成大部分工作。你怎么认为?