Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 将不同表中的值相乘_Mysql_Sql_Join_Aggregate Functions - Fatal编程技术网

Mysql 将不同表中的值相乘

Mysql 将不同表中的值相乘,mysql,sql,join,aggregate-functions,Mysql,Sql,Join,Aggregate Functions,所以我正在为一个学校项目扩展一个数据库。这是一家虚构的公司,它为你提供配方配料,并指导你如何制作等等(比如HelloFresh) 我有两个表,我想从中乘以值:一个“配方配料”表和一个“配料”表 我想将配料表中的卡路里与配方配料表中的卡路里相乘,以便能够合计()卡路里并过滤掉以后超过一定卡路里量的配方 我试着用这个来增加它们: SELECT CALORIES, AMOUNT,(CALORIES*AMOUNT) AS TEST FROM INGREDIENT, RECIPE_INGREDI

所以我正在为一个学校项目扩展一个数据库。这是一家虚构的公司,它为你提供配方配料,并指导你如何制作等等(比如HelloFresh)

我有两个表,我想从中乘以值:一个“配方配料”表和一个“配料”表

我想将配料表中的卡路里与配方配料表中的卡路里相乘,以便能够合计()卡路里并过滤掉以后超过一定卡路里量的配方

我试着用这个来增加它们:

SELECT CALORIES, AMOUNT,(CALORIES*AMOUNT) AS TEST
FROM INGREDIENT,
     RECIPE_INGREDIENTS;
但正如你可能猜到的,我现在把每一个卡路里的量乘以我写下的每一个量

我想做的是,只有在配方配料表中列出ID的配料的热量乘以我在配方配料表中写下的量。
我怎样才能做到这一点呢?

因此,您需要使用联接和额外列来指定这一点,因为成分和数量都不是唯一的

我建议

Select
RecipeID
,Amount
,(i.Calories*Amount) as test
from RECIPE_INGREDIENTS r
inner
Join INGREDIENT i
on i.INGREDIENTID = r.INGREDIENTID

这将显示每种配方成分的卡路里

今天的提示:始终使用现代、明确的
JOIN
语法!更易于编写(无错误),更易于阅读和维护,并且更易于转换为外部联接(如果需要)。您必须设置配方配料行和配料之间的匹配条件。现在,您可以将任意行附加到任意行,即使行中的成分不同。你必须定义你想要计算卡路里的组(每个配方?)。注意,配方有时包含两次相同的成分,因此在(配方,成分)上形成PK可能没有意义。千万不要在
FROM
子句中使用逗号。始终使用正确的、明确的、标准的、可读的
JOIN
语法。你也可以添加一个条件来检查卡路里的数量,然后像你那样做equi-JOIN
Select
RecipeID
,Amount
,(i.Calories*Amount) as test
from RECIPE_INGREDIENTS r
inner
Join INGREDIENT i
on i.INGREDIENTID = r.INGREDIENTID