首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据两个查询的共同字段连接两个查询?

如何根据两个查询的共同字段连接两个查询?
EN

Stack Overflow用户
提问于 2022-10-27 16:36:38
回答 1查看 27关注 0票数 0

我正在努力解决这个问题。我将用水果与食谱的关系来说明这一点。

背景信息:

  • 水果和食谱之间有明确的联系(很少有1:1的值)。
  • 隐式链接(水果和食谱之间相同的元数据),可以是1:m

水果:质地/颜色

菜谱:质地/颜色./餐型

本质上,对于水果方面,我有一个连接多个表(例如.10)的查询,让我们将其命名为果树表。

对于菜谱表,我有一个连接几个表(例如.6)的查询。

我想看看水果,有多少食谱是可能的。因此,本质上,我想连接这两个基于纹理/颜色字段的查询,以查看可能的膳食类型。一种水果可以有多种食谱。我试图使用纹理/颜色作为外键,就好像水果具有应该链接的元数据纹理/颜色一样。

例如。

在这个例子中,对于软红色水果,可以吃三餐:早餐、午餐和零食。对于一个硬橘子水果,两餐是可能的:午餐和甜点。

我该怎么做?

我试图创建一个临时表/视图,但我只有只读访问权限,因此需要另一种方式。

EN

回答 1

Stack Overflow用户

发布于 2022-10-27 17:17:15

首先,我们可以在所描述的自定义条件或关系上使用SQL JOIN从果树和食谱表中查询相关的记录(将水果与具有相同颜色和纹理的菜谱相匹配):

代码语言:javascript
复制
SELECT *
FROM Fruit f
  JOIN Recipe r
  ON f.Texture = r.Texture
    AND f.Color = r.Color

这将返回一个结果集,其中包含每对匹配记录的一行,其中包含两个表中的所有列。每一行将是水果和食谱的匹配组合。

如果我们只想计算每个水果的独特用餐时间(有多少个不同的Meal_Types),我们可以选择一个汇总计数如下:

代码语言:javascript
复制
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 )。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74225438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档