gpt4 book ai didi

javascript - 用mysql比较两个表

转载 作者:行者123 更新时间:2023-11-30 21:28:29 26 4
gpt4 key购买 nike

我试图寻找这个问题的答案,但我不确定这个问题是否有任何答案,因为我不太确定如何正确表达它...这里我有两个表格

配方成分表

Recipe_id|ingredient_id
ifqvv |1
ifqvv |2

用户成分表

User_id|ingredient_id
1 |1
1 |2
2 |1
3 |3

我需要将这些表与如果配方和用户 ingredients_id 完全匹配它将返回 1,或者如果成分大于 0 它将返回 2,如果没有匹配则返回 3。例如,对用户 1 的查询将返回 1,用户 2 返回 2,用户 3 返回 3。我不确定这是否是我必须编写的代码,但有人告诉我这是可能的信息少,导致我来到这里

最佳答案

假设您还有一个user 表,您可以通过将userrecipe_ingredients 表交叉连接然后左-加入 user_ingredients 表,例如:

SELECT u.user_id, ri.recipe_id,
COUNT(ui.ingredient_id) AS available_ingredients, -- Number of ingredients the user has that are required to cook this recipe
COUNT(ri.ingredient_id) AS required_ingredients, -- Number of ingredients that are required to cook this recipe
CASE
WHEN COUNT(ui.ingredient_id) = COUNT(ri.ingredient_id) THEN 'can_cook'
WHEN COUNT(ui.ingredient_id) > 0 THEN 'has_some_ingredients'
ELSE 'has_no_ingredients'
END AS state
FROM users u
CROSS JOIN recipe_ingredients ri
LEFT JOIN user_ingredients ui ON(ri.ingredient_id = ui.ingredient_id AND u.user_id = ui.user_id)
GROUP BY u.user_id, ri.recipe_id
ORDER BY u.user_id, ri.recipe_id

如果你想将它限制到某个用户/食谱,只需使用一个 where 子句:

WHERE u.user_id = 1 AND ri.recipe_id = 'ifqvv'

您可以在这里现场试用:DB Fiddle

如果您没有users 表,那么您可以替换
FROM users u with FROM (SELECT DISTINCT user_id FROM user_ingredients) u
DB Fiddle

关于javascript - 用mysql比较两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57579690/

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