gpt4 book ai didi

mysql - SQL 内部连接多列

转载 作者:行者123 更新时间:2023-11-29 04:39:27 24 4
gpt4 key购买 nike

我有 2 个表 - 菜肴配料:

Dishes 中,我有一份披萨菜肴列表,顺序如下: Dishes Table

成分中,我列出了所有菜肴的所有不同成分,顺序如下:Ingredients Table

我希望能够在每道菜的名称旁边列出每道菜所有成分的所有名称

我写的这个查询没有用名称替换成分 ID,而是选择返回一个空集 - 请解释我做错了什么:

    SELECT dishes.name, ingredients.name, ingredients.id
FROM dishes
INNER JOIN ingredients
ON dishes.ingredient_1=ingredients.id,dishes.ingredient_2=ingredients.id,dishes.ingredient_3=ingredients.id,dishes.ingredient_4=ingredients.id,dishes.ingredient_5=ingredients.id,dishes.ingredient_6=ingredients.id, dishes.ingredient_7=ingredients.id,dishes.ingredient_8=ingredients.id;

如果能引用一下就好了:

  1. 数据库结构的逻辑 - 我做得对吗?
  2. SQL 查询背后的逻辑 - 如果数据库以正确的方式构建,那么为什么在执行查询时我得到空集?
  3. 如果您以前遇到过这样的问题 - 需要单对多关系 - 您是如何使用 PHP 和 MySQL 以不同于此的方式解决它的?

忽略希伯来语文本 - 将其视为您自己的语言。

最佳答案

在我看来,更好的数据库结构应该有一个 Dishes_Ingredients_Rel 表,而不是一堆成分列。

DISHES_INGREDIENTS_REL
DishesID
IngredientID

然后,您可以做一个更简单的 JOIN。

SELECT Ingredients.Name
FROM Dishes_Ingredients_Rel
INNER JOIN Ingredients
ON Dishes_Ingredients.IngredientID = Ingredients.IngredientID
WHERE Dishes_Ingredients_Rel.DishesID = @DishesID

关于mysql - SQL 内部连接多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32912453/

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