gpt4 book ai didi

mysql - 如何处理链接同一实体的多个列

转载 作者:行者123 更新时间:2023-11-30 22:45:22 25 4
gpt4 key购买 nike

这个例子只是我的数据库的一个模式。我有下表称为食谱:

id | author_name | recipe1_id | recipe2_id | recipe3_id

所有食谱都与 recipes_ingredients 表有关:

id | recipe_id | ingredient1 | ingredient2 | ingredient3

现在我在 recipe1_id 到 recipe3_id 上做了三个 JOINS,如下所示:

SELECT recipe1.ingredient1 as recipe1ingredient1, recipe1.ingredient2 as recipe1ingredient2, recipe1.ingredient3 as recipe1ingredient3, [...]
FROM recipes
INNER JOIN recipe recipe1 ON (recipes.recipe1_id = recipes.id)
INNER JOIN recipe recipe2 ON (recipes.recipe2_id = recipes.id)
INNER JOIN recipe recipe3 ON (recipes.recipe3_id = recipes.id)

为了将 3 个食谱映射到 MyBatis 中的一个 bean,我有三个 resultsMap,它们将每个食谱映射到一个包含 3 种成分的食谱对象(recipe1、recipe2、recipe3)。

但是:我想将食谱列在一个列表中。我怎样才能做到这一点?

PS:可以肯定的是,我在表 recipes 和表 recipes_ingredients 中只有 3 个实体。这永远不会改变,所以我看不出有什么理由将它放在 n:m 表中。

最佳答案

我认为这会奏效。

<resultMap id="recipe1" type="recipe1">
...
</resultMap>

<resultMap id="recipe2" type="recipe2">
...
</resultMap>

<resultMap id="recipe3" type="recipe3">
...
</resultMap>

<select id="getRecipes" parameterType="list" resultMap="recipe1, recipe2, recipe3">
SELECT recipe1.ingredient1 as recipe1ingredient1, recipe1.ingredient2 as recipe1ingredient2, recipe1.ingredient3 as recipe1ingredient3, [...]
FROM recipes
INNER JOIN recipe recipe1 ON (recipes.recipe1_id = recipes.id)
INNER JOIN recipe recipe2 ON (recipes.recipe2_id = recipes.id)
INNER JOIN recipe recipe3 ON (recipes.recipe3_id = recipes.id)
</select>

来源:MyBatis multiple resultsets

关于mysql - 如何处理链接同一实体的多个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29805695/

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