【问题标题】:What am I / Was I missing on this SQL request?我在这个 SQL 请求中遗漏了什么?
【发布时间】:2021-08-18 19:04:32
【问题描述】:

对于任何含糊之处,我深表歉意,这是关于我上周在入门级 SQL 职位测试中遇到的一个问题。我当时无法弄清楚如何做到这一点,现在似乎也无法弄清楚。

基本上我得到了 3 张桌子。一个是 Recipes(有食谱名称、ID、说明和注释),一个是 RecipeIngredients(有食谱 ID、成分 ID、成分和成分数量),第三个是成分(成分 ID 和成分)。类似的东西。

我有一些关于 JOIN 语句的查询,这些语句显示了如何制作某些食谱等。但我无法弄清楚如何处理最后一个问题。最后一个问题是这样的:

“一次提供 2 组查询。第一个查询 - 返回特定 ID 的成分、数量和注释。第二个查询 - 返回相同配方 ID 的说明。编写查询以便用户可以轻松更改配方 ID 仅用于两个查询,以便查询不同的配方 ID。”

我知道我们不能为 WHERE 子句加上别名,但这是我可以远程想到的唯一方法,即一次只指定一次 WHERE 即可一次执行 2 个查询。我试图看看我是否可以使用子查询来做到这一点,但没有运气。我考虑过 UNION...但是每个查询中都有不同的列和不同的值,所以这是不行的。

我有什么遗漏吗?还是在尝试将其设置为子查询时我完全失败了?我为含糊而道歉,已经有几天了,我太忙了,不记得在这里发布这个。过去我在匿名浏览该网站时找到了很多帮助,因此我认为值得发布此内容,因为到目前为止我还没有看到类似的内容。

【问题讨论】:

  • 您可以在任何流行的 RDBMS 中创建一个接受参数并根据需要多次使用该参数的过程。

标签: sql


【解决方案1】:

使用 SQL Server,您可以声明一个变量,例如 @recipeID,然后在两个查询中使用它。这将允许您在一处更改值,并在 2 个查询中使用它。

DECLARE @recipeID INT = 123

SELECT * 
FROM recipes 
WHERE recipeID = @recipeID

SELECT * 
FROM recipe_ingredients 
WHERE recipeID = @recipeID

【讨论】:

  • 呃。我知道 Declare,但在过去的一周里,这并没有让我全神贯注。愚蠢的我...谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-23
  • 2012-02-07
  • 1970-01-01
相关资源
最近更新 更多