SQL 连接多个表

SQL join over multiple tables

通过这样的语句,我可以获得食谱名称以及多少 他们每个人都有的成分。

SELECT
r.name, COUNT(i.id) as num_ingredients
FROM recipes AS r
    LEFT JOIN recipe_ingredients ON r.id = recipe_ingredients.recipe_id
    LEFT JOIN ingredients AS i ON recipe_ingredients.ingredient_id = i.id
GROUP BY r.id

如何将 chefs.name 添加到我的 SELECT 以及我已有的数据?

试试这个

SELECT
r.name, COUNT(i.id) as num_ingredients, che.name AS chefs_name
FROM recipes AS r
    LEFT JOIN recipe_ingredients ON r.id = recipe_ingredients.recipe_id
    LEFT JOIN ingredients AS i ON recipe_ingredients.ingredient_id = i.id
    LEFT JOIN chefs AS che ON r.chef_id = che.id
GROUP BY r.id

如果我明白了,你也想加入厨师 table 和 select 它的名字。

您必须在 SELECT 语句中为其添加别名,因为您 select 2 列具有相同的名称。

我还认为列 recipes.chef_id 的数据类型应与 chefs.id 相同(均为 int(11) 或 int(255))。