当前位置: 首页 > 面试题库 >

显示配方名称(如果已提供所有成分的名称)

淳于博
2023-03-14
问题内容

我有3个具有这种结构的表:

Recipe

id | recipe_name

Ingredients

id | ingredients_name

Relationship

rid | recipe_id | ingredients_id

例如,我搜索成分为“鸡肉”和“蛋黄酱”的食谱,然后它将显示所有包含这两种成分的食谱。我已经获得了代码:

SELECT * from recipe r
INNER JOIN relationship ri on r.id=ri.recipe_id
INNER JOIN ingredients i on i.id=ri.ingredients_id
WHERE i.ingredients_name IN ('chicken','mayonnaise')
GROUP BY r.id

但是我想要的是,当一个食谱仅包含鸡肉和蛋黄酱作为其成分时,它必须在单独的结果中显示。我怎样才能做到这一点?


问题答案:

通过添加一个HAVING子句-像这样:

SELECT * from recipe r
INNER JOIN relationship ri on r.id=ri.recipe_id
INNER JOIN ingredients i on i.id=ri.ingredients_id
GROUP BY r.id
HAVING COUNT(DISTINCT i.ingredients_name)=2 AND
       COUNT(DISTINCT case when i.ingredients_name IN ('chicken','mayonnaise') 
                           then i.ingredients_name end)=2

(注意:这将返回 包含鸡肉和蛋黄酱,不包含其他成分的食谱。要返回包含鸡肉和蛋黄酱,但也可能包含其他成分的食谱,请删除COUNT(DISTINCT case条件并恢复该WHERE条款。)



 类似资料:
  • 我正在寻找使用我的应用程序在我的设备上安装的不同应用程序的第一次安装时间。非常基本的PackageManager-

  • 测试类和测试方法可以声明自定义显示名称 - 使用空格,特殊字符,甚至emojis表情符号 - 将由测试runner和测试报告显示。 import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @DisplayName("A special test case") class DisplayNameDem

  • 问题内容: 我有事。URL中的XML: 我想同时显示两个PhonebookEntry值(名字,姓氏,地址)。当前,我的代码仅显示John Smith的PhonebookEntry(最后一个条目)。这是我的代码。 ParsingXML.java ExampleHandler.java ParsedExampleDataSet.java 我是Java和android开发的新手,在此先感谢您的帮助!:)

  • 问题内容: 我有一个包含数百列的数据框,我需要查看所有列名称。 我做了什么: 输出为: 如何显示 所有 列,而不是截断的列表? 问题答案: 您可以全局设置打印选项。我认为这应该工作: 方法1: 方法2: 这样您就可以在执行操作时查看所有列名称和行。列名都不会被截断。 如果只想查看列名,可以执行以下操作:

  • 我已经为我在OracleSQL中创建的多个表的每个约束定义了一个名称。 问题是,要删除特定表的列的约束,我需要知道为每个约束提供的名称,我已经忘记了。 如何列出我为表的每一列指定的所有约束的名称? 这样做有什么SQL的说法吗?

  • 本文向大家介绍用Java显示当前方法名称,包括了用Java显示当前方法名称的使用技巧和注意事项,需要的朋友参考一下 包含由当前堆栈跟踪元素表示的执行点的当前方法名称由java.lang.StackTraceElement.getMethodName()方法提供。 演示此的程序如下所示- 示例 输出结果 现在让我们了解上面的程序。 该方法用于获取当前方法名称,该名称包含由当前堆栈跟踪元素表示的执行点