我正在努力解决这个问题。我将用水果与食谱的关系来说明这一点。
背景信息:
水果:质地/颜色
菜谱:质地/颜色./餐型
本质上,对于水果方面,我有一个连接多个表(例如.10)的查询,让我们将其命名为果树表。
对于菜谱表,我有一个连接几个表(例如.6)的查询。
我想看看水果,有多少食谱是可能的。因此,本质上,我想连接这两个基于纹理/颜色字段的查询,以查看可能的膳食类型。一种水果可以有多种食谱。我试图使用纹理/颜色作为外键,就好像水果具有应该链接的元数据纹理/颜色一样。
例如。
在这个例子中,对于软红色水果,可以吃三餐:早餐、午餐和零食。对于一个硬橘子水果,两餐是可能的:午餐和甜点。
我该怎么做?
我试图创建一个临时表/视图,但我只有只读访问权限,因此需要另一种方式。
发布于 2022-10-27 17:17:15
首先,我们可以在所描述的自定义条件或关系上使用SQL JOIN从果树和食谱表中查询相关的记录(将水果与具有相同颜色和纹理的菜谱相匹配):
SELECT *
FROM Fruit f
JOIN Recipe r
ON f.Texture = r.Texture
AND f.Color = r.Color这将返回一个结果集,其中包含每对匹配记录的一行,其中包含两个表中的所有列。每一行将是水果和食谱的匹配组合。
如果我们只想计算每个水果的独特用餐时间(有多少个不同的Meal_Types),我们可以选择一个汇总计数如下:
SELECT f.ID, COUNT(DISTINCT r.Meal_Type) As Meals
FROM Fruit f
JOIN Recipe r
ON f.Texture = r.Texture
AND f.Color = r.Color
GROUP BY f.ID上面的查询将返回一个结果集,其中包含每个水果的一行以及为该特定水果计算的唯一Meal_Types数。我们使用DISTINCT只对每个Meal_Type计数一次,使用GROUP BY f.ID来区分单个计数(在我们的例子中,我们用Fruit.ID计数Meal_Type )。
https://stackoverflow.com/questions/74225438
复制相似问题