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))。
通过这样的语句,我可以获得食谱名称以及多少 他们每个人都有的成分。
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))。