gpt4 book ai didi

mysql - SQL Join 与代码聚合

转载 作者:行者123 更新时间:2023-11-29 07:21:38 24 4
gpt4 key购买 nike

我正在尝试开发从我的关系数据库 (mysql) 中检索聚合信息的最佳方法。我有两个表:供应商和型号。两者是一对多的关系,即一个厂商可以有多个模型,一个模型只能关联一个厂商。

从两个表中检索信息以便每个供应商都有其关联模型的最佳方法是什么?我的想法是制作一个 REST API,以便它可以具有以下输出:

{
name: "one",
description: "one description",
models: [
{
name: "one_model_1",
price: 100
},
{
name: "one_model_2",
price: 200
}
]
...
  1. 通过连接两个表进行检索。这样,将获得以下输出:

    select v.name as vendorName, v.description as vendorDescription, m.name 
    as modelName, m.price as modelPrice from vendor v inner join model m on
    v.id = m.vendor_id;

    1

    问题在于,有必要执行代码处理以将每个供应商元素与模型列表相关联。在这种情况下,来自数据库的信息会带来来自供应商的重复信息。

  2. 首先搜索所有供应商,然后循环搜索相关模型。这里会出现 N + 1 问题,因为需要一个查询来获取 N 个供应商,然后需要 N 个查询来检索模型。

  3. 首先搜索供应商。然后,将从供应商的 ID 中检索所有模型,并通过代码建立供应商-模型关联。

我想知道什么是最好的解决方案。

最佳答案

SELECT v.Name, v.Description,
GROUP_CONCAT(CONCAT(m.Name, ':', m.Price))
FROM Vendors AS v
JOIN Models AS m ON v.id = m.vendor_id
GROUP BY v.Name, v.Description

一次调用,文本操作在返回结果集之前完成。

关于mysql - SQL Join 与代码聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56010930/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com